Swift Optionals类型

Swift Optionals类型

Swift 4还引入了 Optionals 类型,用于处理没有值的情况。Optionals可以表示“有一个值,它等于x”,或者“根本没有值”。

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

这是一个Optional Integer声明的示例−

var perhapsInt: Int?

这是一个可选的字符串声明:

var perhapsStr: String?

上述声明等价于明确将其初始化为 nil ,表示没有值 –

var perhapsStr: String? = nil

让我们通过下面的示例来了解在Swift 4中如何使用可选类型(Optionals)-

var myString:String? = nil

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

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

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")
}

当我们在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!

自动解包

您可以使用感叹号而非问号来声明可选变量。这样的可选变量将自动解包,您无需在变量末尾使用任何额外的感叹号来获取分配的值。让我们来看一个简单的示例:

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

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

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

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")
}

当我们使用playground运行上面的程序时,我们会得到以下结果−

Your string has - Hello, Swift 4!

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程