以下純屬自己mark記錄哈,之前在使用協(xié)議時(shí),遇到較復(fù)雜的拓展中使用where意思大致能懂渣慕,但是對(duì)于其使用規(guī)范還是有定的疑惑的译断,最近有空了就去看了下
where
關(guān)鍵字的使用哈箱季,整理了下玄柏,畢竟代碼重點(diǎn)還是要會(huì)寫兼呵。
1.首先where
最常用的還是在協(xié)議部分(最主要還是給協(xié)議添加默認(rèn)實(shí)現(xiàn))
//協(xié)議相結(jié)合的方式
//基礎(chǔ)協(xié)議
protocol aProtocol{}
extension aProtocol where Self:UIView{
//只給遵守myProtocol協(xié)議的UIView添加了拓展(強(qiáng)大的協(xié)議拓展 可以給協(xié)議添加默認(rèn)實(shí)現(xiàn) 面向協(xié)議編程的基礎(chǔ))
func getString() -> String{
return "string"
}
}
2.在使用泛型的時(shí)候也常常用到where
對(duì)泛型加以限制
func genericFunc<T>(num: T) where T:ExpressibleByStringLiteral {
print(num)
}
3.這也是我在看別人博客的時(shí)候看到的畸写,比較少用的在forin循環(huán)中使用where語句(相比而言驮瞧,可能會(huì)更加清晰點(diǎn),個(gè)人見解哈)其實(shí)有點(diǎn)想guard
語法
let list = [1,2,3,4,5,6]
for i in list where i > 5 {
print(i)
}
//上面使用where等同于以下的forin循環(huán)
for j in list {
if j > 5{
print(j)
}
}
綜上所述枯芬,where
常見用法完畢论笔,其實(shí)還有元組switch中使用where
的情況,但是鑒于元組很少用到千所,所以~
Thank you for watching~