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类型。

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


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

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

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

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

转载于:https://my.oschina.net/iosscoket/blog/412082

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值