我的目标是使用""
表示原始字符串为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。有没有办法做到这一点,还是在这里以我的方式来选择链接的语义?
使您的扩展名正常工作:将可选的String?
始终设置为默认值String
的""
。
struct S {
var title: String?
}
let s = S(title: "howdy")
let result = s.title.emptyIfNil
其中结果为类型String
您刚巧创建了两个可选参数,即结构S
和变量title
。