程序员我看人间事,热爱作首诗

Swift:Optional解引用小技巧

2018-05-28  本文已影响17人  泪已无痕

在使用Optional过程中,相信大家都会用到类似下面的代码:

class User {

    var name: String?
    
    init(_ name: String) {
       self.name = name 
    }   
}

let user: User? = User("Tom.Huang")
if let name = user?.name {
    print(name)
}

当我们对username属性进行解引用的时候,相信这样的if语句是经常出现的,当这种判断逻辑在代码中大量出现的时候,你是否跟我一样有一种不舒服的感觉呢?因为它充斥着大量的模版代码,啰嗦且不好看,正因为此,我们可以对Optional进行简单的扩展,来解决上面所说的问题:

extension Optional {

    func letDo(_ block: (Wrapped) -> Void) {
        if let value = self {
            block(value)
        }
    }
}

user?.name.letDo { print($0) }

通过对比,是不是觉得user?.name.letDo { print($0) }这样的调用方式看起来舒服多了呢? ^ _ ^

上一篇 下一篇

猜你喜欢

热点阅读