以下纯属自己mark记录哈,之前在使用协议时,遇到较复杂的拓展中使用where意思大致能懂,但是对于其使用规范还是有定的疑惑的,最近有空了就去看了下
where
关键字的使用哈,整理了下,毕竟代码重点还是要会写。
1.首先where
最常用的还是在协议部分(最主要还是给协议添加默认实现)
//协议相结合的方式
//基础协议
protocol aProtocol{}
extension aProtocol where Self:UIView{
//只给遵守myProtocol协议的UIView添加了拓展(强大的协议拓展 可以给协议添加默认实现 面向协议编程的基础)
func getString() -> String{
return "string"
}
}
2.在使用泛型的时候也常常用到where
对泛型加以限制
func genericFunc<T>(num: T) where T:ExpressibleByStringLiteral {
print(num)
}
3.这也是我在看别人博客的时候看到的,比较少用的在forin循环中使用where语句(相比而言,可能会更加清晰点,个人见解哈)其实有点想guard
语法
let list = [1,2,3,4,5,6]
for i in list where i > 5 {
print(i)
}
//上面使用where等同于以下的forin循环
for j in list {
if j > 5{
print(j)
}
}
综上所述,where
常见用法完毕,其实还有元组switch中使用where
的情况,但是鉴于元组很少用到,所以~
Thank you for watching~