Swift教程之可选类型【问号的用法】

//MARK:-----------可选类型?的用法------------
/*
-------------------------------------------------------------
可选类型(变量名: 类型?)
这个值要么存在,并且等于x,要么根本不存在。
可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,指对象不存在,而Swift 的 nil 不是指针,它代表特定类型的值不存在。任何类型的可选类型都能赋值为 nil,而不仅限于对象类型。并且更安全。
*/
let num = "123"

//由于toInt方法可能会失败,因此它会返回一个可选的Int类型,而不同于Int类型。一个可选的Int类型被记为Int?,不是Int。问号表明它的值是可选的,可能返回的是一个Int,或者返回的值不存在。
let convertedNumber:Int? = Int(num)// convertedNumber is inferred to be of type "Int?", or "optional Int"

var serverResponseCode: Int? = 404  //要么存在,且值为404
serverResponseCode = nil            //要么不存在。要将可选变量设为值不存在的状态,可以给它赋特殊值 nil


/*nil 不能用于非可选量。
如果代码中的常量或变量需要适配值不存在的特殊情况,务必将它声明为恰当的可选类型。
如果定义的可选量时不提供默认值,该常量或变量将自动设为 nil
*/
//var strValue = nil  //错误
var strValue : String?


//判断一个Optional的值是否有值,可以用if来判断
if (strValue != nil)
{
    //do sth with strValue
}

/* 使用Optional值
在使用Optional值的时候需要在具体的操作,比如调用方法、属性、下标索引等前面需要加上一个?
问号的意思是询问是否响应后面这个方法,和原来的isResponseToSelector有些类似
*/
let hashValue = strValue?.hashValue     //strValue是Optional的字符串,如果strValue是nil,则hashValue也为nil,如果strValue不为nil,hashValue就是strValue字符串的哈希值
//let hashValue = strValue.hashValue      //错误。对于Optional值,不能直接进行操作
print("hashValue is \(hashValue)")

/*总结 ? 使用场景
声明Optional值变量
用在对Optional值操作中,用来判断是否能响应后面的操作[判断是否是nil的三元运算符]
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值