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()
    }
}