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

为一个空的非零字符串合并Swift运算符

发布时间:2020-12-14 04:24:57 所属栏目:百科 来源:网络整理
导读:我在 Swift中有一个字符串变量: let foo = "bar" 但它也可以是任何其他任意字符串.现在我想做以下事情: let bar = ... // either the value of foo,or if foo is "",it will be "default" 我抬头看“合并运算符”,看来这是正确的方向.我用以下代码尝试了它
我在 Swift中有一个字符串变量:

let foo = "bar"

但它也可以是任何其他任意字符串.现在我想做以下事情:

let bar = ... // either the value of foo,or if foo is "",it will be "default"

我抬头看“合并运算符”,看来这是正确的方向.我用以下代码尝试了它:

let bar = foo ?? "default"

但似乎当foo为空时,它仍将采用此方法,并且它不会将默认设置为值.

我假设合并运算符只能使用nil值而不能使用空字符串.但是,有没有一个解决方案,我可以测试我的值为空字符串,并指定一个默认值?我不能使用if / else,因为它将位于一个类中.

解决方法

“和”之间有区别.因此,您将foo定义为“bar”,因此它是非可选的,因此它永远不会返回nil.听起来你需要的是三元运算符:

let bar = foo.isEmpty ? foo : "default"

另外,为了扩展返回true的答案,你可以创建一个运算符来同时考虑可选字符串和空字符串:

infix operator ???? {}
func ???? (lhs: String?,rhs: String) -> String {
    if let s = lhs {
        if !s.isEmpty {
            return s
        }
    }    
    return rhs
}

(编辑:李大同)

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

    推荐文章
      热点阅读