Swift 4还引入了Optional
类型,它处理缺少值。 Optional
简单的解释是:“有一个值,它等于x”或“根本没有值”。
一个Optional
本身就是一种类型,实际上是Swift 4的新超级枚举之一。 它有两个可能的值,None
和Some(T)
,其中T
是Swift 4中可用的正确数据类型的关联值。
这是一个Optional
的整数声明 -
var perhapsInt: Int?
下面是一个Optional
的String
声明 -
var perhapsStr: String?
通过以下示例来了解Optional
如何在Swift 4中工作 -
var myString:String? = nil if myString != nil { print(myString) } else { print("myString has nil value") }
当使用playground运行上述程序时,得到以下结果 -
myString has nil value
Optional
类似于在Objective-C中使用nil
和指针,但它们适用于任何类型,而不仅仅是类。
如果将变量定义为Optional
,那么要从此变量中获取值,必须将其解包。在变量的末尾添加一个感叹号。
看看下面一个简单的例子 -
var myString:String? myString = "Hello, Swift 4!" if myString != nil { print(myString) } else { print("myString has nil value") }
当使用playground运行上述程序时,得到以下结果 -
Optional("Hello, Swift 4!")
现在应用解包来获取变量的正确值 -
var myString:String? myString = "Hello, Swift 4!" if myString != nil { print( myString! ) } else { print("myString has nil value") }
当使用playground运行上述程序时,得到以下结果 -
Hello, Swift 4!
可以使用感叹号而不是问号声明Optional
变量。 这些Optional
变量将自动解包,您无需在变量末尾使用任何其他感叹号来获取指定的值。 看看一个简单的例子 -
var myString:String! myString = "Hello, Swift 4!" if myString != nil { print(myString) } else { print("myString has nil value") }
当使用playground运行上述程序时,得到以下结果 -
Hello, Swift 4!
使用Optional
绑定来确定Optional
项是否包含值,如果是,则使该值可用作临时常量或变量。
if
语句的Optional
绑定如下 -
if let constantName = someOptional { statements }
下面是一个简单的例子来理解Optional
绑定的用法 -
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") }
当使用playground运行上述程序时,得到以下结果 -
Your string has - Hello, Swift 4!