Swift 函数的默认结果
Default Result for Swift function
我目前正在使用一种简单的方法来测试我的文本字段文本,例如:
extension String {
func test() -> Bool {
return true
}
}
现在如果在具体字符串上尝试我的函数,一切正常
let result = myString.test() //result is a Bool
但是如果我在可选字符串(如 UITExtField.text
)上执行它,类型变为 Optional<Bool>
let result = myOptionalString?.test() //result is a Optional<Bool>
有没有办法提供一个默认值(或实现)来避免在调用者为Optional
.
时测试结果
我知道我可以使用像 ??
这样的运算符或者做一个 if-else 语句,但是很多代码都是徒劳的
谢谢!
您可以为 Optional String
进行扩展。
示例
extension Optional where Wrapped == String {
func test() -> Bool {
switch self {
case .none: return false
case .some(let string): return true
}
}
}
希望对您有所帮助 ;)
如果 nil
,您可以将 Optional<String>
扩展到 return 默认值,如果不是,则转发到 test()
。
extension Optional where Wrapped == String {
func test() -> Bool {
guard let value = self else { return false }
return value.test()
}
}
我目前正在使用一种简单的方法来测试我的文本字段文本,例如:
extension String {
func test() -> Bool {
return true
}
}
现在如果在具体字符串上尝试我的函数,一切正常
let result = myString.test() //result is a Bool
但是如果我在可选字符串(如 UITExtField.text
)上执行它,类型变为 Optional<Bool>
let result = myOptionalString?.test() //result is a Optional<Bool>
有没有办法提供一个默认值(或实现)来避免在调用者为Optional
.
我知道我可以使用像 ??
这样的运算符或者做一个 if-else 语句,但是很多代码都是徒劳的
谢谢!
您可以为 Optional String
进行扩展。
示例
extension Optional where Wrapped == String {
func test() -> Bool {
switch self {
case .none: return false
case .some(let string): return true
}
}
}
希望对您有所帮助 ;)
如果 nil
,您可以将 Optional<String>
扩展到 return 默认值,如果不是,则转发到 test()
。
extension Optional where Wrapped == String {
func test() -> Bool {
guard let value = self else { return false }
return value.test()
}
}