1 - Optionals
Optionals的设计初衷,应该是体会到了各种dreaded null pointer。
在playground中输入以下代码:
var str
println(str)
将会得到报错:
Type annotation missing in pattern
这表明编译器不知道str的类型
于是将代码改写成:
var str: String
println(str)
又得到报错:
Variable 'str' used before being initialized
Swift是不允许你在compile time使用一个未经初始化的变量的。
如果真的需要一个值为nil的对象,该怎么办呢?
如果将代码更改成:
var str: String = nil
println(str)
会得到报错:
Type 'string' does not conform to protocol 'NilLiteralConvertible'
既然将变量申明成String类型,那它就必须是个string,nil的类型并不是String,so出现错误。
但如果真的需要使用一个nil值ÿ