在Swift中处理可选属性的习语看起来过于冗长,如果你想做的是在nil的情况下提供一个默认值:
if let value = optionalValue { // do something with 'value' } else { // do the same thing with your default value }
这涉及不必要地复制代码,或
var unwrappedValue if let value = optionalValue { unwrappedValue = value } else { unwrappedValue = defaultValue }
这要求unwrappedValue不是常数。
Scala的Option monad(基本上和Swift的Optional一样)有一个方法getorElse用于这个目的:
val myValue = optionalValue.getorElse(defaultValue)
更新
var unwrappedValue = optionalValue ?? defaultValue
在这种情况下,三元运算符是您的朋友
var unwrappedValue = optionalValue ? optionalValue! : defaultValue
您还可以为可选枚举提供自己的扩展:
extension Optional { func or(defaultValue: T) -> T { switch(self) { case .None: return defaultValue case .some(let value): return value } } }
然后你可以做:
optionalValue.or(defaultValue)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。