Swift中的可选类型

        C和Objective-C中并没有可选类型这个概念。在Objective-C中,一个方法要不返回一个对象要不返回nil,nil表示“缺少一个合法的对象”。然而,这只对对象起作用,对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失。这种方法假设方法的调用者知道并记得对特殊值进行判断。然而,Swift 的可选类型可以让你暗示任意类型的值缺失,并不需要一个特殊值。

        以String的toInt()方法为例进行说明,代码如下:

let testString = "123"
var testNum: Int? = testString.toInt()
        从String类型转换为Int时,依赖于待转换的字符串是否可被转换为Int,上述代码中是可以转换成功的,如果待转换的字符串为"Hello World",必定失败。
let testString = "Hello World"
var testNum: Int? = testString.toInt()
println(testNum)
    此时的输出结果为nil。可选类型就可以保证接受到非法值时,结果为nil。

    xcode也为我们做了检查,当去掉"?"时,会提示报错。因为toInt()方法返回的是一个optional类型。

Swift中的可选类型

    在实际应用中,可以利用这个特性来判断用户的输入是否合法。


if testNum != nil {
    println("ok")
}

    同时也存在另一种方式来简化这个判断:

if let testNum = testString.toInt() {
    println("ok")
}

 通过这个方法,如果testString为有效的输入,例如,"123"。得到的testNum将不再是optional类型了,而是整型123。

你可能感兴趣的:(Swift可选类型)