Swift学习:4.可选类型

本文介绍了Swift中可选类型的使用方法,包括如何处理可能缺失的值、如何通过if语句和可选绑定来检查和使用可选类型的值,以及如何声明和使用隐式解析可选类型。

可选类型

使用可选类型(optionals)来处理值可能缺失的情况。

下面的例子使用toInt方法来尝试将一个String转换成Int

let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()
// convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int"
因为toInt方法可能会失败,所以它返回一个可选类型(optional)Int,而不是一个Int。一个可选的Int被写作Int?而不是Int。问号暗示包含的值是可选类型,也就是说可能包含Int值也可能不包含值。(不能包含其他任何值比如Bool值或者String值。只能是Int或者什么都没有。)

if 语句以及强制解析

if convertedNumber != nil {
    println("\(possibleNumber) has an integer value of \(convertedNumber!)")
} else {
    println("\(possibleNumber) could not be converted to an integer")
}
// 输出 "123 has an integer value of 123"

可选绑定

if let actualNumber = possibleNumber.toInt() {
    println("\(possibleNumber) has an integer value of \(actualNumber)")
} else {
    println("\(possibleNumber) could not be converted to an integer")
}
// 输出 "123 has an integer value of 123"

隐式解析可选类型

let possibleString: String? = "An optional string."
println(possibleString!) // 需要惊叹号来获取值
// 输出 "An optional string."

示例代码:

class Person {

    var residence: Residence?

}


class Residence {

    var numberOfRooms = 1

}


let john = Person()

if let roomCount = john.residence?.numberOfRooms {

    println("John's residence has \(roomCount) room(s).")

} else {

    println("Unable to retrieve the number of rooms.")

}

john.residence = Residence()

if let roomCount = john.residence?.numberOfRooms {

    println("John's residence has \(roomCount) room(s).")

} else {

    println("Unable to retrieve the number of rooms.")

}


    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值