我正在使用as Int一个switch案例解开一个可选项.它有效,但编译器会发出警告'as'测试始终为true.这当然是谎言,因为as只有价值不成功才能成功nil.
考虑这个最小的,可验证的例子:
var age: Int?
switch age {
case let y as Int: // warning: 'as' test is always true
print(y)
case nil:
print("it is nil")
}
Run Code Online (Sandbox Code Playgroud)
输出:
它没有
问题:什么是斯威夫特在这里用这个警告思考,是否有更好的方法来解开价值而不必使用力量展开?
这是一个由as Int- 带来的错误- 因为如果y不是nil,它肯定是一个Int.
在这种情况下正确的语法("有没有更好的方法来解开值而不必使用强制解包")是:
switch age {
case let y?:
print(y)
case nil:
print("it is nil")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1802 次 |
| 最近记录: |