Swift Optional类型

Swift Optional类型

Swift 4还引入了Optional类型,它处理缺少值。 Optional简单的解释是:“有一个值,它等于x”或“根本没有值”。

一个Optional本身就是一种类型,实际上是Swift 4的新超级枚举之一。 它有两个可能的值,NoneSome(T),其中T是Swift 4中可用的正确数据类型的关联值。

这是一个Optional的整数声明 -

var perhapsInt: Int?

下面是一个OptionalString声明 -

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和指针,但它们适用于任何类型,而不仅仅是类。

1.强制解包

如果将变量定义为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!

2.自动解包

可以使用感叹号而不是问号声明Optional变量。 这些Optional变量将自动解包,您无需在变量末尾使用任何其他感叹号来获取指定的值。 看看一个简单的例子 -

var myString:String!
myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

当使用playground运行上述程序时,得到以下结果 -

Hello, Swift 4!

3.Optional绑定

使用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!