适用于初学者的Swift Optionals
如果您是初学者,尽管可能已经找到了解决方法,但是Optionals可能很难理解。 在本文中,我们将探讨Swift Optionals背后的基本原理。 在开始之前,我假设您了解Swift的基础知识。 如果没有,请关注我的YouTube视频并返回此处。
与其他编程语言相比,Swift带来的主要优势之一是Optionals。 Optionals允许您将nil值存储在变量中,这在其他语言中几乎是不可能的。 如果在变量中找到nil值,程序将立即崩溃。 但是我们可以在Swift中使用Optionals来避免这种情况。 让我们看下面的分步示例。
让我们如下创建两个变量。 如您所见, myFirstName
变量是一个可选变量,因为它有一个?
在变量之后。 即使myFirstName
变量为nil,您也可以打印myFirstName
和myLastName
而不会出现任何问题。 您几乎无法使用任何其他编程语言来执行此操作,因为该应用程序将崩溃。
让myFirstName:字符串? =无
let myLastName:String =“ Mayu”
print(myFirstName)//输出nil
print(myLastName)//打印Mayu
因此,现在让我们为myFirstName
变量分配一些值,并查看如何打印这些值。 如下所示,可选的myFirstName
变量在打印中显示它是可选的。 我们将在课程结束时学习如何摆脱它。
让myFirstName:字符串? =“杰伊”
let myLastName:String =“ Mayu”
print(myFirstName)//打印可选的(“ Jay”)
print(myLastName)//打印Mayu
我们还应该注意,我们不能让可选变量与其他变量交互,因为它不仅会起作用。 它可以使用String类型的变量,而不会导致应用程序崩溃,但是如果尝试使用其他变量类型,它将使应用程序崩溃。 请看下面基于int
数据类型的示例。
让numberOfDogs:Int = 2
让numberOfCats:Int = 1
让numberOfParrots:整数? = 4
print(numberOfDogs)//打印2
print(numberOfCats)//打印1
print(numberOfParrots)//打印4
print(numberOfCats + numberOfDogs)//打印3
print(numberOfCats + numberOfDogs + numberOfParrots)//应用在此处崩溃
当您尝试将numberOfParrots
变量与其他变量添加时,应用程序崩溃,因为numberOfParrots
变量是变量的可选类型,在与其他变量一起用于各种操作之前,应先将其拆开。
强制展开
让我们看看解开可选变量的最简单,最肮脏的方法。 我们可以简单地使用!
在可选变量的末尾添加,但这并不安全,如果可选变量为nil,则应用程序将崩溃。 为了解开numberOfParrots
变量,我们将添加!
在变量末尾,我们将得到类似numberOfParrots!
让我们看下面的例子。
让numberOfDogs:Int = 2
让numberOfCats:Int = 1
让numberOfParrots:整数? = 4
print(numberOfCats + numberOfDogs)//打印3
print(numberOfCats + numberOfDogs + numberOfParrots!)//打印7
让我们将numberOfParrots
的值更改为nil并检查。 现在程序将崩溃。
让numberOfDogs:Int = 2
让numberOfCats:Int = 1
让numberOfParrots:整数? =无
print(numberOfDogs)//打印2
print(numberOfCats)//打印1
print(numberOfParrots)//输出nil
print(numberOfCats + numberOfDogs)//打印3
print(numberOfCats + numberOfDogs + numberOfParrots!)// app崩溃
应用程式当机,因为只有Optional变数可以保留nil值。 由于我们已经用!
解开了变量 符号,它不再是可选变量。 因此,该应用会崩溃,因为它的值为nil。 那么我们如何克服这个呢?
安全地展开
安全地展开意味着,我们检查可选变量是否具有实际值或是否持有nil值。 如果它保持实际值,则将继续进行预期的操作,否则将打印错误方法或采用替代路径。 让我们看下面的示例,其中numberOfParrots
变量已安全地展开。
让numberOfDogs:Int = 2
让numberOfCats:Int = 1
让numberOfParrots:整数? =无
打印(numberOfParrots)
打印(numberOfCats)
打印(numberOfParrots)
如果让parrotsCount = numberOfParrots {
打印(猫数+狗数+鹦鹉数)
}其他{
打印(numberOfCats + numberOfDogs)
}
如上所示,if条件用于检查numberOfParrots
变量是否为nil。 如果不是nil,则执行if块。 如果变量确实为nil,则执行else块。
我希望本文能使您了解Optionals的目的,以及如何利用Swift中提供的这一酷炫功能。 祝好运。
我写了另一篇文章,介绍如何有效地解开可选内容。 请随时查看该文章。
迅捷:像老板一样展开
为了理解本文,您应该对Optional有一个清晰的认识。 如果您不知道什么是… medium.com