dorentus
2014-07-31 16:50:33 +08:00
3) let myValue: String 和 let myValue: String? 这两种声明的写法。前一种,编译器可以保证在任何时候 myValue 都一定是有值的,永远不会是 nil,假如没初始化,整个程序甚至都没法编译通过;而后一种,没有在其它地方初始化的话,myValue 的值就是 nil。
4 & 5) 你可以把 if let 当作是个语法糖……理解起来的话,以你的 if let actualNumber = possibleNumber.toInt() 为例,因为 if 的条件成立的话,actualNumber 必然不是 nil,于是编译器很智能,可以从这里直接推断出 actualNumber 的类型不再是 Int? 而是 Int。但是你分开写的话,编译器就不去试图做这个推断,于是 let convertedNumber = possibleNumber.toInt() 的 convertedNumber 的类型就是 Int? 而不是其它,用的时候就需要你自己去 unwrap。