code.club

 找回密碼
 立即註冊
搜索
查看: 8113|回復: 0
打印 上一主題 下一主題

有關 func 和 closure 寫法

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2016-8-8 20:21:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 birdy 於 2016-8-8 23:34 編輯

func test(n1:Int, n2:Int, s1:String) {

  print("/(s) is /(n1+n2")

}


test(100, n2:200, s:"John")  -->第一個參數不寫名稱,後面一定要寫。

換成 closure 則先是把  func test1 這名字拿掉, 然後把 { 拿到最前面 , 再於主要執行程式碼前方加上 in 。

var testClosure = { (n1:Int, n2:Int, s1:String)  in

  print("/(s) is /(n1+n2")

}

testClosure(100,200,"John") --> 參數絕不可寫名字出來

closure更省略的寫法:

var testClosure : (Int, Int, String) -> () = {  // 無論有無回傳值都要寫出來
  print("/($2) is /($0+$1)")
}

但如果參數有名稱如:var testClosure : (a:Int, b:Int, c:String) 則一定全部寫出來,包括第一個。例如 :testClosure(a:10, b:20, c:"hello")
反之如無名稱自然不必寫。有的有名字有的沒名字,有名就要寫。
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|手機版|Archiver|code.club  

GMT+8, 2024-11-21 17:05 , Processed in 0.083860 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表