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

2018-11-20  本文已影响0人  FreshAlpha

举个简单例子

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

上一篇下一篇

猜你喜欢

热点阅读