1 // MARK: 1.斷言 assert,參數如果為ture則繼續,否則拋出異常 2 let number = 3 3 4 //第一個參數為判斷條件,第二各參數為條件不滿足時的列印信息 5 assert(number >= 3,"number 不大於 3") 6 7 //如果斷言被處罰(numb... ...
1 // MARK: 1.斷言 assert,參數如果為ture則繼續,否則拋出異常 2 let number = 3 3 4 //第一個參數為判斷條件,第二各參數為條件不滿足時的列印信息 5 assert(number >= 3,"number 不大於 3") 6 7 //如果斷言被處罰(number <= 3),將會強制結束程式,並列印相關信息 8 // assertion failed: number 不大於 3 9 // 斷言可以引發程式終止,主要用於調試階段。比如下麵的情況: 10 /* 11 * 自定義整形數組索引越界問題 12 * 向函數傳值,無效值引發函數不能完成相應任務 13 * Optional類型數據為nil值,引發的程式crash 14 */ 15 16 // MARK: 2.獲取序列的元素個數 characters.count (countElements) 17 let str = "foo" 18 19 //列印元素個數 20 print("count == \(str.characters.count)") 21 //列印結果 22 // count == 3 23 24 // MARK: 3.返回最大最小值min(),max() 25 max(10, 20) 26 min(1, 3, 5, 9, 8) 27 28 // MARK: 4.排序 sorted (sort) 29 let ary = ["B", "A", "C"] 30 31 //預設排序(升序) 32 let ary1 = ary.sorted() 33 print(ary1) 34 //列印結果 35 // ["A", "B", "C"] 36 37 //自定義排序(降序) 38 let ary2 = ary.sorted { 39 // $1 < $0 40 $0.1 < $0.0 41 } 42 print(ary2) 43 //列印結果 44 // ["C", "B", "A"] 45 // 可以看出,可以用0、1、2來表示調用閉包中參數,0指代第一個參數,1指代第二個參數,2指代第三個參數,以此類推n+1指代第n個參數,後的數字代表參數的位置,一一對應。 46 47 // MARK: 5.map函數 48 let arr = [2,1,3] 49 50 //數組元素進行2倍放大 51 let doubleArr = arr.map {$0 * 2} 52 print(doubleArr) 53 //列印結果 54 //[4, 2, 6] 55 56 //數組Int轉String 57 let moneyArr = arr.map { "¥\($0 * 2)"} 58 print(moneyArr) 59 //列印結果 60 //["¥4", "¥2", "¥6"] 61 62 //數組轉成元組 63 let groupArr = arr.map {($0, "\($0)")} 64 print(groupArr) 65 //列印結果 66 //[(2, "2"), (1, "1"), (3, "3")] 67 68 // map(sequence, transformClosure): 如果transformClosure適用於所給序列中所有的元素,則返回一個新序列。 69 70 // MARK: 6.flapMap函數 71 let flapMap_ary = [["B", "A", "C"],["1","5"]] 72 73 //flapMap函數會降低維度 74 //flapMap_ary.flatMap(<#T##transform: (Array<String>) throws -> ElementOfResult?##(Array<String>) throws -> ElementOfResult?#>) 75 let flapMapAry = flapMap_ary.flatMap{$0} 76 print(flapMapAry) 77 //列印結果 78 //["B", "A", "C", "1", "5"] // 二維數組變成了一維 79 80 // MARK: 7.篩選函數filter 81 let numbers = [1, 2, 3, 4, 5, 6] 82 83 //獲取偶數值 84 let evens = numbers.filter{$0 % 2 == 0} 85 print(evens) 86 //列印結果 87 //[2, 4, 6] 88 89 // MARK: 8.reduce函數 90 let arr_reduce = [1, 2, 4,] 91 92 //對數組各元素求和 93 let sum = arr_reduce.reduce(0) {$0 + $1} 94 print(sum) 95 //列印結果 96 //7 97 //arr_reduce.reduce(<#T##initialResult: Result##Result#>, <#T##nextPartialResult: (Result, Int) throws -> Result##(Result, Int) throws -> Result#>) 98 //對數組各元素求積 99 let product = arr_reduce.reduce(1) {$0 * $1} 100 print(product) 101 //列印結果 102 //8 103 104 // MARK: 9.dump(object): 一個對象的內容轉儲到標準輸出 105 dump(arr_reduce) 106 107 /* 108 109 ▿ 3 elements 110 - 1 111 - 2 112 - 4 113 114 */ 115 // MARK: 10.indices(sequence): 在指定的序列中返回元素的索引(零索引) 116 for i in arr_reduce.indices { 117 print(i) 118 // 0 1 2 119 } 120 121 // MARK: 11.一些在編程中經常會用到的函數 122 abs(-1) == 1 //獲取絕對值 123 ["1","6","4"].contains("2") == false //判斷序列是否包含元素 124 ["a","b"].dropLast() == ["a"] //剔除最後一個元素 125 ["a","b"].dropFirst() == ["b"] //剔除第一個元素 126 ["a","b"].elementsEqual(["b","a"]) == false //判斷序列是否相同 127 ["a","b"].indices == 0..<2 //獲取index(indices是index的複數) 128 ["A", "B", "C"].joined(separator: ":") == "A:B:C" //將序列以分隔符串聯起來成為字元串 129 Array([2, 7, 0].reversed()) == [0, 7, 2] //逆序,註意返回的並非原類型序列 130 131 // MARK: 常用的 74 個函數 132 /* 133 134 abs(...) 135 advance(...) 136 alignof(...) 137 alignofValue(...) 138 assert(...) 139 bridgeFromObjectiveC(...) 140 bridgeFromObjectiveCUnconditional(...) 141 bridgeToObjectiveC(...) 142 bridgeToObjectiveCUnconditional(...) 143 c_malloc_size(...) 144 c_memcpy(...) 145 c_putchar(...) 146 contains(...) 147 count(...) 148 countElements(...) 149 countLeadingZeros(...) 150 debugPrint(...) 151 debugPrintln(...) 152 distance(...) 153 dropFirst(...) 154 dropLast(...) 155 dump(...) 156 encodeBitsAsWords(...) 157 enumerate(...) 158 equal(...) 159 filter(...) 160 find(...) 161 getBridgedObjectiveCType(...) 162 getVaList(...) 163 indices(...) 164 insertionSort(...) 165 isBridgedToObjectiveC(...) 166 isBridgedVerbatimToObjectiveC(...) 167 isUniquelyReferenced(...) 168 join(...) 169 lexicographicalCompare(...) 170 map(...) 171 max(...) 172 maxElement(...) 173 min(...) 174 minElement(...) 175 numericCast(...) 176 partition(...) 177 posix_read(...) 178 posix_write(...) 179 print(...) 180 println(...) 181 quickSort(...) 182 reduce(...) 183 reflect(...) 184 reinterpretCast(...) 185 reverse(...) 186 roundUpToAlignment(...) 187 sizeof(...) 188 sizeofValue(...) 189 sort(...) 190 split(...) 191 startsWith(...) 192 strideof(...) 193 strideofValue(...) 194 swap(...) 195 swift_MagicMirrorData_summaryImpl(...) 196 swift_bufferAllocate(...) 197 swift_keepAlive(...) 198 toString(...) 199 transcode(...) 200 underestimateCount(...) 201 unsafeReflect(...) 202 withExtendedLifetime(...) 203 withObjectAtPlusZero(...) 204 withUnsafePointer(...) 205 withUnsafePointerToObject(...) 206 withUnsafePointers(...) 207 withVaList(...) 208 209 */