以下純屬自己mark記錄哈,之前在使用協(xié)議時,遇到較復雜的拓展中使用where意思大致能懂,但是對于其使用規(guī)范還是有定的疑惑的,最近有空了就去看了下
where
關鍵字的使用哈,整理了下,畢竟代碼重點還是要會寫。
1.首先where
最常用的還是在協(xié)議部分(最主要還是給協(xié)議添加默認實現(xiàn))
//協(xié)議相結合的方式
//基礎協(xié)議
protocol aProtocol{}
extension aProtocol where Self:UIView{
//只給遵守myProtocol協(xié)議的UIView添加了拓展(強大的協(xié)議拓展 可以給協(xié)議添加默認實現(xiàn) 面向協(xié)議編程的基礎)
func getString() -> String{
return "string"
}
}
2.在使用泛型的時候也常常用到where
對泛型加以限制
func genericFunc<T>(num: T) where T:ExpressibleByStringLiteral {
print(num)
}
3.這也是我在看別人博客的時候看到的,比較少用的在forin循環(huán)中使用where語句(相比而言,可能會更加清晰點,個人見解哈)其實有點想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
常見用法完畢,其實還有元組switch中使用where
的情況,但是鑒于元組很少用到,所以~
Thank you for watching~