加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Swift中为Optional提供默认值?

发布时间:2020-12-14 06:12:33 所属栏目:百科 来源:网络整理
导读:在Swift中处理可选属性的习语看起来过于冗长,如果你想做的是在nil的情况下提供一个默认值: if let value = optionalValue { // do something with 'value'} else { // do the same thing with your default value} 这涉及不必要地复制代码,或 var unwrapp
在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)

我缺少什么? 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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读