可选项
优质
小牛编辑
135浏览
2023-12-01
Swift 4还引入了Optionals类型,它处理缺少值。 Optionals说“有一个值,它等于x”或“根本没有值”。
一个Optional本身就是一种类型,实际上是Swift 4的新超级动力枚举之一。 它有两个可能的值, None和Some(T) ,其中T是Swift 4中可用的正确数据类型的关联值。
这是一个可选的整数声明 -
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
Optionals类似于在Objective-C中使用nil和指针,但它们适用于任何类型,而不仅仅是类。
强制打开
如果您将变量定义为optional ,那么要从此变量中获取值,您必须将其unwrap 。 这只是意味着在变量的末尾添加一个感叹号。
我们举一个简单的例子 -
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")
}
当我们使用playground运行上述程序时,我们得到以下结果。
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!