来自可选Double的Swift字符串

Buf*_*alo 2 swift

在Swift中值为nil时是否有指定占位符文本的快捷方式?

现在我做:

let myText:String!
if myDouble != nil{
  myText = "\(myDouble!)"
}else{
  myText = "Value not provided"
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,但是必须一直这样做非常烦人.有没有办法做类似的事情

let myText:String = "\(myDouble ?? "Value no provided")"
Run Code Online (Sandbox Code Playgroud)

这失败是因为它想要一个默认的Double值,但我真的想要一个String值.

rma*_*ddy 6

你可以使用map和nil-coalescing:

let myText = myDouble.map { String($0) } ?? "Value not provided"
Run Code Online (Sandbox Code Playgroud)

如果myDoublenil,结果mapnil,结果是之后的值??.

如果myDouble不是nil,则结果是map从中创建字符串的输出Double.

有关更多详细信息,请参阅Swift标准库中枚举map函数的文档Optional.

  • _"任何了解Swift的人都很好"_嗯,恭喜,你现在知道Swift好一点了! (3认同)
  • @Teejay我不知道这是什么意思.任何了解Swift的人都可以阅读这一行代码.如果您有特定问题,请询问. (2认同)
  • 不需要在那里使用封闭物.您可以将String初始化器传递给map方法`map(String.init)` (2认同)