零合并运算符与混合类型



是否有任何简洁的快速方法来获取非字符串类型的可选并获取一个字符串值,如果它是 .some(( 或某个默认值(如果它是 .none((,则它是 .none(( 之外的某个默认值:

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

对于一个相对简单的事情来说,这似乎非常冗长,感觉我错过了一些明显的东西。

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

你可以写这样的东西:

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

或者,如果您想使用某些没有属性 description 的类型:

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

相关内容

  • 没有找到相关文章

最新更新