Swift 4还引入了 Optionals 类型,用于处理缺少值的情况,可选的选项是"有一个值,它等于x"或"根本没有值"。
Optional是一种类型,实际上是Swift 4的新函数枚举之一,它有两个可能的值, None 和 Some(T),其中T是Swift 4中可用的正确数据类型关联值。
这是一个可选的Integer整数声明-
var perhapsInt: Int?
这是一个可选的String字符串声明-
var perhapsStr: String?
上面的声明等效于将其显式初始化为 nil ,这意味着没有值-
var perhapsStr: String?=nil
让我们以下面的示例来了解可选选项在Swift 4中的工作方式-
var myString:String?=nil if myString != nil { print(myString) } else { print("myString has nil value") }
运行上述程序时,我们得到以下输出-
myString has nil value
可选与在Objective-C中对指针使用 nil 相似,但是它们适用于任何类型,而不仅仅是类。
强制解包
如果将变量定义为可选,则要从该变量中获取值,必须解包。这仅意味着在变量末尾添加一个感叹号。
var myString:String? myString="Hello, Swift 4!" if myString != nil { print(myString) } else { print("myString has nil value") }
运行上述程序时,我们得到以下输出-
Optional("Hello, Swift 4!")
现在让我们应用展开以获取变量的正确值-
var myString:String? myString="Hello, Swift 4!" if myString != nil { print( myString! ) } else { print("myString has nil value") }
运行上述程序时,得到以下输出。
Hello, Swift 4!
自动解包
您可以使用感叹号而不是问号来声明可选变量,此类可选变量将自动解开,您无需在变量末尾使用任何其他的感叹号即可获取分配的值。
var myString:String! myString="Hello, Swift 4!" if myString != nil { print(myString) } else { print("myString has nil value") }
运行上述程序时,我们得到以下输出-
Hello, Swift 4!
可选绑定
使用可选绑定查找可选对象是否包含值,如果包含,则使该值可用作临时常量或变量。
if 语句的可选绑定如下-
if let constantName=someOptional { statements }
让我们以一个简单的示例来了解可选绑定的用法-
var myString:String? myString="Hello, Swift 4!" if let yourString=myString { print("Your string has -\(yourString)") } else { print("Your string does not have a value") }
运行上述程序时,我们得到以下输出-
Your string has - Hello, Swift 4!