if let = ,let = 的多项判断简写

举个简单例子

class Person {    var headerImageUrl: String?    }

func setHeaderImage() { 

  let person = Person() 

  if let imageStr = person.headerImageUrl, let imageUrl = URL(string: imageStr) {   

    headerImgV.sd_setImage(with: URL(string: imageUrl))

    }

}

当给一个headerImgVSD一个图片的时候,取Person中的string并转换成URL,一般情况下会写两个let,但实际在if的代码中往往只用到最后一个let拿到的值,并且多次let在语句的写法上也比较冗余。

解决办法是每个需要解包的判断都可以用flatmap{}函数代替,写法上简便,用起来也方便。

func setHeaderImage() {

    let person =Person()

    if let imageUrl = person.headerImageUrl.flatMap({$0}).flatMap({URL(string: $0)}) {

        headerImgV.sd_setImage(with:URL(string: imageUrl))

    }

}

当if后面有多重let的时候这样用起来方便许多。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容