1.閉包
swift中的閉包類似于oc中的block回調(diào),但是swift的閉包有很多種寫法摆昧,具有多變性矫俺,今天就來(lái)總結(jié)一下最近swift的使用
1.完整寫法
上面是寫法烹棉,下面是調(diào)用阳仔。打印出? hello ji加油
2.在block中進(jìn)行邏輯判斷忧陪,再返回值
如圖扣泊,下面調(diào)用以后返回值為1.
然后我們可以進(jìn)行閉包表達(dá)式優(yōu)化
1.類型優(yōu)化, 由于函數(shù)中已經(jīng)聲明了閉包參數(shù)的類型, 所以傳入的實(shí)參可以不用寫類型
2.返回值優(yōu)化, 同理由于函數(shù)中已經(jīng)聲明了閉包的返回值類型,所以傳入的實(shí)參可以不用寫類型
?3.參數(shù)優(yōu)化, swift可以使用$索引的方式來(lái)訪問(wèn)閉包的參數(shù), 默認(rèn)從0開(kāi)始
逃逸閉包:
閉包捕捉值
閉包在網(wǎng)絡(luò)請(qǐng)求中的使用:
然后在VC里面調(diào)用
2.代理
然后實(shí)現(xiàn)
下面就是例子
3.結(jié)構(gòu)體
4.擴(kuò)展: 就是給一個(gè)現(xiàn)存類, 結(jié)構(gòu)體, 枚舉或者協(xié)議添加新的屬性揮著方法的語(yǔ)法, 無(wú)需目? ? ? ?標(biāo)源碼, 就可以吧想要的代碼加到目標(biāo)上面
?但有一些限制條件需要說(shuō)明:
?1.不能添加一個(gè)已經(jīng)存在的方法或者屬性;
?2.添加的屬性不能是存儲(chǔ)屬性, 只能是計(jì)算屬性;
?格式:
?extension 某個(gè)先有類型{
? ? //增加新的功能
?}
5.數(shù)組近范,字典操作
swift中進(jìn)行數(shù)組替換的方法
var arr = [1,2,3]
arr.replaceSubrange(0...1, with: [99,88,77])
2個(gè)字典的合并
//字典合并
var dic5 = ["name":"hihello","age":23] as [String : Any]
let dic6 = ["teacher":"wang"]
for(key,value)indic6
{
? ? dic5[key] = value
}