打破可选链

问题描述 投票:0回答:1

我的目标是使用""表示原始字符串为nil的情况,将可选字符串解包为字符串。这是一个显而易见的方法:

extension Optional where Wrapped == String {
    var emptyIfNil: String {
        self ?? ""
    }
}
struct S {
    var title: String?
}
let s: S? = S(title: "howdy")
let result = s?.title.emptyIfNil

精细和花花公子,但result推断为String?。我不是那个意思我的意思是我们应该保证表达式emptyIfNil返回String。有没有办法做到这一点,还是在这里以我的方式来选择链接的语义?

swift string optional
1个回答
0
投票

使您的扩展名正常工作:将可选的String?始终设置为默认值String""

struct S {
    var title: String?
}

let s = S(title: "howdy")
let result = s.title.emptyIfNil

其中结果为类型String您刚巧创建了两个可选参数,即结构S和变量title

© www.soinside.com 2019 - 2024. All rights reserved.