From 562551d69644382d74fe8d9d99ae6f616080c195 Mon Sep 17 00:00:00 2001 From: AceVest Date: Sat, 4 Mar 2017 12:29:41 +0800 Subject: [PATCH] ... --- .../Basics.xcplaygroundpage/Contents.swift | 88 ----------- .../Contents.swift | 147 ++++++++++++++++++ .../AcePlay.playground/contents.xcplayground | 1 + .../UserInterfaceState.xcuserstate | Bin 18964 -> 20006 bytes 4 files changed, 148 insertions(+), 88 deletions(-) create mode 100644 learn/AcePlay/AcePlay.playground/Pages/CollectionTypes.xcplaygroundpage/Contents.swift diff --git a/learn/AcePlay/AcePlay.playground/Pages/Basics.xcplaygroundpage/Contents.swift b/learn/AcePlay/AcePlay.playground/Pages/Basics.xcplaygroundpage/Contents.swift index 4890fa0..0c860f6 100644 --- a/learn/AcePlay/AcePlay.playground/Pages/Basics.xcplaygroundpage/Contents.swift +++ b/learn/AcePlay/AcePlay.playground/Pages/Basics.xcplaygroundpage/Contents.swift @@ -130,91 +130,3 @@ print() print("The String is: \(str)") -// Print separator & terminator -var company:Array = [ "Apple", "Google", "Facebook", "Tencent" ] -print(company[0], company[1], company[2], company[3], separator: "#", terminator: " $$$$$\n") - -printLine("Count company Array 1") -for (i,v) in company.enumerated() { // enumerate 返回的是 index value 组成的元组 - print(i, v, separator: " - ", terminator: "\n") -} - -printLine("Count company Array 2") -company.insert("Alibaba", at: company.count) -for i in 0..(0.. = [] -var SetB = Set() -var SetC: Set = ["ASM", "C", "C++", "go", "Swift"] -//var SetD: Set = ["mov", "pop", "push", "xchg"] // 可以通过数组类型推断出Set的类型 -SetB.insert("A") -SetB.insert("c") -SetB.insert("c") -SetB.count -//SetC.removeFirst() -SetC.remove("ASM") - -if let removedVal = SetC.remove("ASM") { - print("\(removedVal) I'm over it.") -} else { - print("I never much cared for that.") - SetC.insert("ASM") -} - -if SetC.contains("Swift") { - print("SetC Contains Swift") -} - -for v in SetC.sorted() { - print(v) -} - -printLine("Dictionary") -//var DictA = Dictionary() -//var DictB = ["KA":"VA", "KB":"VB", "KC":"VC"] -//var DictC: [String:String] = [:] -var DictD = [Int:String]() - -DictD[1] = "V1" -DictD[4] = "V2" -DictD[99] = "V3" -DictD[36] = "F4" -if let oldValue = DictD.updateValue("V4", forKey: 36) { // means: if let oldValue = DictD[36] - print("The old value for Key:36 was \(oldValue)") -} - -print("DictD Item Count: ", DictD.count) - -for (k, v) in DictD { - print("Key:", k, " Value: ", v) -} - -for key in DictD.keys.sorted() { - print(key) -} - -for value in DictD.values.sorted() { - print(value) -} - -let keys = [Int](DictD.keys) -print(keys) \ No newline at end of file diff --git a/learn/AcePlay/AcePlay.playground/Pages/CollectionTypes.xcplaygroundpage/Contents.swift b/learn/AcePlay/AcePlay.playground/Pages/CollectionTypes.xcplaygroundpage/Contents.swift new file mode 100644 index 0000000..993fb4c --- /dev/null +++ b/learn/AcePlay/AcePlay.playground/Pages/CollectionTypes.xcplaygroundpage/Contents.swift @@ -0,0 +1,147 @@ +//: [Previous](@previous) + +import Foundation + +var str = "Hello, playground" + +//: [Next](@next) + +var company:Array = [ "Apple", "Google", "Facebook", "Tencent" ] + +// Print separator & terminator +print(company[0], company[1], company[2], company[3], separator: "#", terminator: " $$$$$\n") + +// 遍历数组 +for v in company { + print("Company: \(v)") +} + +printLine("Count company Array 1") +for (i,v) in company.enumerated() { // enumerate 返回的是 index value 组成的元组 + print(i, v, separator: " - ", terminator: "\n") +} + +printLine("Count company Array 2") +company.insert("Alibaba", at: company.count) +for i in 0.. = [1, 2] +var someIntsE: [Int] = [1, 2] +var someIntsF = [1, 2] + + +someIntsA.append(1) +someIntsB.replaceSubrange(CountableRange(0.. = [] +var SetB = Set() +var SetC: Set = ["ASM", "C", "C++", "go", "Swift"] +var SetD: Set = ["mov", "pop", "push", "xchg"] // 可以通过数组类型推断出Set的类型 +SetB.insert("A") +SetB.insert("c") +SetB.insert("c") +SetB.count +//SetC.removeFirst() +SetC.remove("ASM") + +if let removedVal = SetC.remove("ASM") { + print("\(removedVal) I'm over it.") +} else { + print("I never much cared for that.") + SetC.insert("ASM") +} + +if SetC.contains("Swift") { + print("SetC Contains Swift") +} + +for v in SetC { + print(v) +} + +for (i, v) in SetD.enumerated() { + print("Iterating Over a Set \(i)\t\(v)") +} + +for (i, v) in SetD.sorted().enumerated() { + print("Iterating Over a Set in Order \(i)\t\(v)") +} + +let oddDigits: Set = [1, 3, 5, 7, 9] +let evenDigits: Set = [0, 2, 4, 6, 8] +let singlePrimeDigits: Set = [2, 3, 5, 7] + +// 并 +print("Set Union: ", oddDigits.union(evenDigits).sorted()) + +// 差 +print("Set Subtracting: ", oddDigits.subtracting(singlePrimeDigits).sorted()) + +// 交 +print("Set Intersection: ", oddDigits.intersection(singlePrimeDigits).sorted()) + +// 补 +print("Set SymmetricDifference: ", oddDigits.symmetricDifference(singlePrimeDigits).sorted()) + + +let houseAnimals: Set = ["🐶", "🐱"] +let farmAnimals: Set = ["🐮", "🐑", "🐶", "🐔", "🐱"] +let cityAnimals: Set = ["🐦", "🐭"] + +print(houseAnimals.isSubset(of: farmAnimals)) // 是否是子集 +print(houseAnimals.isStrictSubset(of: farmAnimals)) // 是否是真子集 +print(farmAnimals.isSuperset(of: houseAnimals)) +print(farmAnimals.isDisjoint(with: cityAnimals)) // 是否无交集 + +printLine("Dictionary") +//var DictA = Dictionary() +//var DictB = ["KA":"VA", "KB":"VB", "KC":"VC"] +//var DictC: [String:String] = [:] +var DictD = [Int:String]() + +DictD[1] = "V1" +DictD[4] = "V2" +DictD[99] = "V3" +DictD[36] = "F4" +if let oldValue = DictD.updateValue("V4", forKey: 36) { // means: if let oldValue = DictD[36] + print("The old value for Key:36 was \(oldValue)") +} + +print("DictD Item Count: ", DictD.count) + +for (k, v) in DictD { + print("Key:", k, " Value: ", v) +} + +for key in DictD.keys.sorted() { + print(key) +} + +for value in DictD.values.sorted() { + print(value) +} + +let keys = [Int](DictD.keys) +print(keys) \ No newline at end of file diff --git a/learn/AcePlay/AcePlay.playground/contents.xcplayground b/learn/AcePlay/AcePlay.playground/contents.xcplayground index 9140691..9baedd5 100644 --- a/learn/AcePlay/AcePlay.playground/contents.xcplayground +++ b/learn/AcePlay/AcePlay.playground/contents.xcplayground @@ -7,5 +7,6 @@ + \ No newline at end of file diff --git a/learn/AcePlay/AcePlay.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate b/learn/AcePlay/AcePlay.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate index a208718ee0cd558cb5f6d0c14f210a5583fb4d80..423c7fc3ef157c481ed35cc158f319e155aab355 100644 GIT binary patch delta 10188 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 delta 9392 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 -- 2.44.0