閉包基礎(chǔ)知識(shí)
Swift閉包和OC的block類似不過(guò)還是有點(diǎn)區(qū)別
OC的block是一個(gè)匿名函數(shù)
Swift 中函數(shù)是閉包的一個(gè)特例(這句話第一次聽(tīng)到的可能有些朦朧稼锅,多敲慢慢體會(huì)吧只可意會(huì)不可言傳哑了。吱殉。桩卵。狱掂。撓哥的理解就是一個(gè)特殊的函數(shù)。置尔。。額氢伟。榜轿。)
1.最簡(jiǎn)單閉包
解釋下
首先聲明一個(gè)名字為demo1的方法,第一個(gè)參數(shù)名字為name的String類型朵锣,第二個(gè)參數(shù)為名字為finish的一個(gè)函數(shù)谬盐,第一個(gè)()為參數(shù),空就是沒(méi)有參數(shù)后面的->() 為返回值诚些,這里寫(xiě)的是沒(méi)有返回值设褐。
注:在第30行的finish() ?執(zhí)行閉包,一般作為完成耗時(shí)操作后做回調(diào)用的
最后看下輸出內(nèi)容就可以知道程序是怎么走得了,這里就不再過(guò)多贅述助析。
另:小技巧 如果閉包是最后一個(gè)參數(shù)犀被,在調(diào)用的時(shí)候可以簡(jiǎn)寫(xiě)上面代碼簡(jiǎn)寫(xiě)為
很神奇吧~ () -> () in 沒(méi)了~!呵呵 蘋(píng)果就是這么規(guī)定的外冀,如果閉包是最后一個(gè)參數(shù)可以省略不寫(xiě)~寡键!
in 這個(gè)東西是區(qū)分 ?定義 和 代碼實(shí)現(xiàn)之間的分隔標(biāo)記
定義就是 ?()->() 這個(gè)就是定義 ??
第一張圖的 print("hello word") 就是代碼實(shí)現(xiàn)
所以如果閉包是最后一個(gè)參數(shù) ?這個(gè) ()->() in 就可以不用寫(xiě)了~!