if let value = optionalValue { // do something with 'value'} else { // do the same thing with your default value}
这涉及不必要地复制代码,或
var unwrappedValueif let value = optionalValue { unwrappedValue = value} else { unwrappedValue = defaultValue}
这要求unwrappedValue不是常数。
Scala的Option monad(基本上和Swift的Optional一样)有一个方法getorElse用于这个目的:
val myValue = optionalValue.getorElse(defaultValue)
我缺少什么? Swift有一个紧凑的方式已经做了吗?或者,失败,是否可以在可选的扩展中定义getorElse?
更新苹果现在增加了一个合并运算符:
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)
然而,我建议坚持三元运算符,因为其他开发人员会明白更快,而不必调查或方法
注意:我开始一个module添加常用助手像这样或者可选对swift。
总结以上是内存溢出为你收集整理的在Swift中为Optional提供默认值?全部内容,希望文章能够帮你解决在Swift中为Optional提供默认值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)