我知道在Swift中所有变量都必须设置一个值,并且通过使用选项,我们可以设置一个nil最初设置的变量.
我不明白的是,用a设置一个变量!是做什么的,因为我认为这会从一个可选项中"解开"一个值.我想通过这样做,你保证有一个值来展开该变量,这就是为什么在IBActions上你会看到它被使用.
所以简单地说,当你做这样的事情时,初始化的变量是什么:
var aShape : CAShapeLayer!
Run Code Online (Sandbox Code Playgroud)
为什么/我什么时候会这样做?
Jia*_*aro 140
在类型声明!中类似于?.两者都是可选的,但它!是一个" 隐式解包"的可选项,这意味着您不必打开它来访问该值(但它仍然可以是nil).
这基本上是我们在objective-c中已经具有的行为.一个值可以是nil,你必须检查它,但你也可以直接访问该值,就好像它不是一个可选的(重要区别在于,如果你不检查nil,你会得到一个运行时错误)
// Cannot be nil
var x: Int = 1
// The type here is not "Int", it's "Optional Int"
var y: Int? = 2
// The type here is "Implicitly Unwrapped Optional Int"
var z: Int! = 3
Run Code Online (Sandbox Code Playgroud)
// you can add x and z
x + z == 4
// ...but not x and y, because y needs to be unwrapped
x + y // error
// to add x and y you need to do:
x + y!
// but you *should* do this:
if let y_val = y {
x + y_val
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23682 次 |
| 最近记录: |