我试图保护从字符串到Float到Int的转换:
guard let v = Int (Float("x")) else {
return -1
}
Run Code Online (Sandbox Code Playgroud)
swift 3编译器抱怨:
可选类型'Float?'的值 没有打开; 你的意思是用'!' 要么 '?'?
添加"?" 但是没有帮助.并且"!" 这里会错的,不是吗?
是否有可能解决这个问题,而不必使用两行或两个保护声明?
Optional有一个map专门用于此的功能:
guard let v = Float("x").map(Int.init) else {
return nil
}
Run Code Online (Sandbox Code Playgroud)
你可以用一个guard带有中间变量的语句来做到这一点:
guard let f = Float("x"), case let v = Int(f) else {
return
}
Run Code Online (Sandbox Code Playgroud)
注意:case存在作为Int(f)不返回可选值这一事实的解决方法。(感谢您的想法,@Hamish)
| 归档时间: |
|
| 查看次数: |
1162 次 |
| 最近记录: |