美文网首页
if let = ,let = 的多项判断简写

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

作者: FreshAlpha | 来源:发表于2018-11-20 15:08 被阅读0次

    举个简单例子

    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的时候这样用起来方便许多。

    相关文章

      网友评论

          本文标题:if let = ,let = 的多项判断简写

          本文链接:https://www.haomeiwen.com/subject/bnqxqqtx.html