【问题标题】:Nil Coalescing Operator with mixed types具有混合类型的 Nil 合并运算符
【发布时间】:2017-08-26 07:48:53
【问题描述】:

有没有什么好的简洁快速的方法来获取一个非字符串类型的可选值并获得一个字符串值,如果它是 .some() 则该值是该值的字符串解释,如果它是 .none 则为一些默认值() 除了以下内容:

let statusCode = (resp as? HTTPURLResponse)?.statusCode
let statusCodeString: String
if let statusCode = statusCode {
    statusCodeString = "\(statusCode)"
} else {
    statusCodeString = "None"
}

对于一个相对简单的事情来说,它看起来非常冗长,感觉就像我错过了一些明显的东西。

仅使用 nil-coalescing 运算符是行不通的,因为您必须提供相同类型的默认值。

【问题讨论】:

    标签: swift null optional default-value null-coalescing-operator


    【解决方案1】:

    你可以这样写:

    let statusCodeString = statusCode?.description ?? "None"
    

    或者,如果您想使用一些不具有 description 属性的类型:

    let statusCodeString = statusCode.map{String(describing: $0)} ?? "None"
    

    【讨论】:

    • 就是这样,尤其是一般用例。谢谢!
    • .map{String(describing: $0)} 更简单的写成.map(String.init(describing:))
    • @Alexander,谢谢。但这是我的偏好,我的比你少两个字符。
    • @OOPer 它增加了不必要的封闭性
    • @Alexander,您可以期待非转义闭包的良好优化,这就是它成为默认值的原因。
    猜你喜欢
    • 2015-05-24
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2018-10-24
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多