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!

参考链接

https://www.learnfk.com/swift/swift-optionals.html