标签:
当值可能存在缺省的情况时,你就可以使用可选项。意思是:有一个值,它可以等于一个x的具体值,也可能没有值。
注意:在C或者Objective-C中没有可选值这这个概念。在Objective-C中有一个和可选项相近的函数,这个函数返回一个nil否则返回一个对象,nil意味着一个有效对象的缺省值。然而,可选项只能用于对象,不能用于结构,基础C类型,或者枚举值。对于这些类型,Objective-C函数通常返回一个特定的值(比如NSNotFound)来说明一个缺省的值。我们可以通过逆向测试方法假设函数的调用者知道有函数有一个特殊值并记得校验。Swift可选项可让你在任何时候指明一个缺省的值,并且不需要一个特定的常量。这儿有个例子说明了缺省值被用于的范围。
Swift中的字符串(String)类型有一个叫toInt的函数,这个函数可以把一个字符串转(String)化为一个整数(Int)值。然后,并不是所有的字符串都可以被转换为一个整数,例如字符串"123"可以转换为一个整数123,但是,字符串"hello","world"就不能转换为一个明确的数值。
下边这个例子演示了函数toInt尝试把一个字符串转换为一个整数:
let possibleNumber="123"
let convertedNumber=possibleNumber.toInt()
// convertedNumber 的类型被自动推断出为一个整形可选项,Int?
因为toInt函数可能转换失败,让它返回一个Int还不如返加一个可选项Int?。整数型可选项写作Int?,不是Int。问号标记指明了这个值可能存在可选,这意味着这个值有时可能是一个Int值,有时可能不存在任何值。(它不能包含其它的任何值,比如Bool值或者String字符串,它要么是一个整数,要么什么都没有)。
nil
你可以通过一个特殊值nil来设置一个可选变量的值的状态:
var serverResponseCode: Int? = 404
// serverResponseCode 包含了一个真实的Int值 404
serverResponseCode = nil
// serverResponseCode现在不包含任何值。
注意:nil不能被用于不是可选型的常量和变量。如果一个常量或变量在一些特定的条件下需要一个缺省值,这时就需要把它定义为一个合适类型的可选值。
如果你定义可选型的常量或变量时没有提供默认值时,这个常量或变量的值会自动的被设置为nil:
var surveyAnswer:String? // suveyAnswer 的值被自动设置为nil
注意:Swift中的nil和Objective-C的nil不一样。在Objective-C中的nil指向一个不存在的对象,在Swift中nil不是指向一个确定类型的缺省值。任何类型的可选值都可以被设置为nil,不仅仅是对象类型。
标签:
原文地址:http://www.cnblogs.com/nj20091571/p/4433677.html