swift 可选类型详解 (optionals)
可选类型(optionals)来处理值可能缺失的情况 。 解释说明:对于从oc转swift的同学来讲,其实swift可选是比较容易理解的,可选类型其实对应oc的nil类型比较类似。oc的nil只是针对对象来说的。但是swift的可选类型(?)则是对结构体,枚举,c语言类型,并且对象(个人以为是swift里边的所有数据类型)。 直观表示废话不说直接上代码:(代码源于swift2.0 中文翻译) var serverResponseCode: Int? = 404 serverResponseCode = nil serverResponseCode的类型是 Int? 可选类型,意思是这个变量是既可以是Int类型的变量也可以是nil,因此下方可以看到这个变量可以给nil值。之所以我会这么说明的意思是:如果这个变量如果不声明为optionals类型,是不可以赋值为nil的!大家不信的话可以亲自试一试 接下来揭开可选的几种类型: (1)强制解析:
当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个惊叹号表示“我知道这个可选有值,请使用它。”这被称为可选值的强制解析(forced unwrapping)。如下代码解释说明: if convertedNumber != nil { print("convertedNumber has an integer value of (convertedNumber!).")
} (2)可选绑定 :
使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在if和while语句中,这条语句不仅可以用来判断可选类型中是否有值,同时可以将可选类型中的值赋给一个常量或者变量。 if let actualNumber = Int(possibleNumber) { print("'(possibleNumber)' has an integer value of (actualNumber)")
} else { print("'(possibleNumber)' could not be converted to an integer")
} 可选绑定于控制流语句紧密结合 let actualNumber = Int(possibleNumber),当Int(possibleNumber)为nil的时候这条语句本来是编译不能通过的,当编译不能通过的时候, 这时候进入else分支里 (3)隐式解析可选类型: 这种类型的可选状态被定义为隐式解析可选类型(implicitly unwrapped optionals)。把想要用作可选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选类型。 如下代码: let possibleString: String? = "An optional string." let assumedString: String! = "An implicitly unwrapped optional string." let implicitString: String = assumedString // 不需要感叹号 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |