Swift中的where使用


以下纯属自己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~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 参考资源《swifter》https://github.com/iOS-Swift-Developers/Swif...
    柯浩然阅读 1,482评论 0 6
  • 136.泛型 泛型代码让你可以写出灵活,可重用的函数和类型,它们可以使用任何类型,受你定义的需求的约束。你可以写出...
    无沣阅读 1,544评论 0 4
  • 从雪山归来的第一天腹泻、第二日开始重感冒、今天是昏昏沉沉的第三天。是的,我的身体在严肃的反抗着我之前的过激行为。 ...
    霜巍阅读 149评论 0 0
  • 心里无限生成的线,是找不到根源的尽头,衍生了复杂 我拖着疲惫不堪的躯壳回到我原以为的小窝,耳边却回荡着亲情的希望和...
    凉风忧等夏阅读 191评论 0 0