所以我试图这样做
let foo = dict["key"] as? String ?? "empty"
var bar = some_func(string: foo!)
Run Code Online (Sandbox Code Playgroud)
和XCode 6抱怨
Operand of postfix '!' should have optional type; type is 'String'
在第二行.
如果我将第一行更改为
let foo: String? = dict["key"] as? String ?? "empty"
Run Code Online (Sandbox Code Playgroud)
错误消失了.
这是某种缺陷还是我做错了什么?
Mar*_*n R 111
零合并运算符a ?? b是一个快捷方式
a != nil ? a! : b
Run Code Online (Sandbox Code Playgroud)
它返回左操作数解包或右操作数.所以foois 的类型String和第二行应该是
var bar = some_func(string: foo)
Run Code Online (Sandbox Code Playgroud)
没有感叹号因为foo不是可选的而且无法解开.
(如果您将第一行更改为
let foo: String? = dict["key"] as? String ?? "empty"
Run Code Online (Sandbox Code Playgroud)
然后右手边的结果再次被包裹成一个可选的字符串,需要在第二行中展开.它会让错误消失,但这可能不是你想要的.)
| 归档时间: |
|
| 查看次数: |
20536 次 |
| 最近记录: |