带有“?”(问号)和“!”(感叹号)的Swiftvariables装饰
我明白,在Swift中,所有的variables都必须设置一个值,通过使用可选项,我们可以设置一个variables来初始化nil 。 
 我不明白的是,用什么设置variables! 正在做,因为我的印象是,这从一个可选的“解开”一个值。 我认为这样做,你是保证有一个价值,打开这个variables,这就是为什么在IBActions和你看到它的使用。 
所以简单地说,当你做这样的事情时,什么是被初始化的variables:
 var aShape : CAShapeLayer! 
为什么/我什么时候可以这样做?
 在一个types声明中! 是类似的?  。 两者都是可选的,但! 是一个“ 隐式解包”的可选项 ,这意味着你不必打开它来访问值(但它仍然可以为零)。 
这基本上是我们在Objective-C中已经有的行为。 值可以是零,你必须检查它,但你也可以直接访问的价值,如果它不是一个可选的(重要的不同,如果你不检查零你会得到一个运行时错误)
 // 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 
用法:
 // 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 }