在使用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)
}
当我们对user
的name
属性进行解引用的时候,相信这样的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) }
这样的调用方式看起来舒服多了呢? ^ _ ^
网友评论