📜  Swift-可选

📅  最后修改于: 2020-12-25 04:24:39             🧑  作者: Mango


Swift 4还引入了Optionals类型,该类型可处理缺少值的情况。可选的选项是“有一个值,它等于x”或“根本没有值”。

Optional是一种单独的类型,实际上是Swift 4的新超级功能枚举之一。它有两个可能的值, NoneSome(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与指针一起使用,但是它们适用于任何类型,而不仅仅是类。

强制展开

如果将变量定义为optional ,则要从该变量获取值,必须将其拆包。这仅意味着在变量末尾添加一个感叹号。

让我们举一个简单的例子-

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!