Swift 使用 nil 合并运算符简化可选 Int 到 String 的转换

标签 swift

假设我有以下场景:

var str: String
var num: Int?

if let num = num {
    str = "\(num) foo"
}
else {
    str == "? foo"
}

流控语句能不能简化成一行? IE。类似的东西:

var str: String
var num: Int?

str = "\(String(num) ?? "?") foo"

最佳答案

您可以通过可选链接调用description 属性,然后使用nil 合并运算符 ??如果 numnil(导致 可选链 返回):

str = "\(num?.description ?? "?") foo"

例子:

for num in [nil, 5] {
    let str = "\(num?.description ?? "?") foo"
    print(str)
}
? foo
5 foo

关于Swift 使用 nil 合并运算符简化可选 Int 到 String 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45261773/

相关文章:

ios - #import ProjectName-Swift.h 到头文件中不能将 swift 用作 .h 属性?

json - 从 post 方法中检索 json 数据并附加到数组

swift - 如何调整 UITableViewRowAction 的大小以适应自定义大小的 tableViewCell? - swift 3

swift - 每 10 分钟为游戏添加一次生命,就像 candy crush

ios - 如何从另一个 UIPickerView 更改 UIPickerView 的字符串?

ios - 将 Alamofire 结果解析为 Swift 中的对象(使用 : Alamofire, SwiftyJSON 和 ObjectMapper)

swift - 最前面的 UIView 与 TapGestureRecognizer 未接收触摸

ios - 在 UITableView 中滚动到 UISearchBar 的顶部

swift - 我应该在 swift 的 getter 方法中返回什么

ios - 如果 - 否则在 Swift 中