常用的 74個內置函數

来源:http://www.cnblogs.com/lurenq/archive/2017/09/07/7490070.html
-Advertisement-
Play Games

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  */

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • “智能家居”很早就出現在大家的視野中,但目前大部分還是停留在概念階段,如何讓智能家居真正的落地開花呢?我想人工智慧的出現必然會打破這種現狀。 作為一個開發者,你是不是還在糾結如何能夠用語音控制你的家居產品呢? 比如,用戶說:我回家了。 你可以幫他打開燈、打開空調。 ... ...
  • 在項目中用到了隨機數,使用了SecureRandom.getInstance("SHA1PRNG"),發現首次運行,時間極長。 當然,以上說的情況,是Linux環境。 在我本地運行並不慢,本地是Windows環境。 查了一些資料,可參考http://blog.csdn.net/xiaojsj111/ ...
  • 任務描述:實現登錄和退出 1.項目結構 2.源代碼 urls.py views.py index,html login.html regist.html models.py 3.運行測試 未登錄訪問: 登錄後訪問: 退出 ...
  • tensorflow利用anaconda在ubuntu下安裝方法及jupyter notebook運行目錄及遠程訪問配置 Ubuntu下安裝Anaconda 出現許可後可按Ctrl+C跳過,yes同意。 安裝完成後詢問是否加入path路徑,亦可自行修改文件內容 關閉命令台重開 可查看是否安裝成功 修 ...
  • pip install i http://pypi.douban.com/simple/ packagename pip install i http://pypi.tuna.tsinghua.edu.cn/simple packagename ...
  • Gordon L. Hempton是西雅圖的一位黑客和設計師,他花費了幾個月的時間研究和比較了12種流行的JavaScript MVC框架,併在博客中總結了每種框架的優缺點,最終的結果是,Ember.js勝出。 此次比較針對的特性標準有四種,分別是: UI綁定(UI Bindings) 複合視圖(C ...
  • 哎呀,看了那麼多博客,搬運了那麼多代碼,第一次自己寫博客,我發現即使會使用某技術了,但是要表達、轉述出來還是不簡單的。希望我能堅持下去哈。 為什麼使用Zxing?Google 名氣大啊,其他我也不瞭解啊。 上手還是很容易的,引入jar 包後十幾代碼的事。 1、在pom.xml 引入依賴 2、後臺co ...
  • 概述 Java集合框架由Java類庫的一系列介面、抽象類以及具體實現類組成。我們這裡所說的集合就是把一組對象組織到一起,然後再根據不同的需求操縱這些數據。集合類型就是容納這些對象的一個容器。也就是說,最基本的集合特性就是把一組對象放一起集中管理。根據集合中是否允許有重覆的對象、對象組織在一起是否按某 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...