适用于初学者的Swift Optionals

如果您是初学者,尽管可能已经找到了解决方法,但是Optionals可能很难理解。 在本文中,我们将探讨Swift Optionals背后的基本原理。 在开始之前,我假设您了解Swift的基础知识。 如果没有,请关注我的YouTube视频并返回此处。

与其他编程语言相比,Swift带来的主要优势之一是Optionals。 Optionals允许您将nil值存储在变量中,这在其他语言中几乎是不可能的。 如果在变量中找到nil值,程序将立即崩溃。 但是我们可以在Swift中使用Optionals来避免这种情况。 让我们看下面的分步示例。

让我们如下创建两个变量。 如您所见, myFirstName变量是一个可选变量,因为它有一个? 在变量之后。 即使myFirstName变量为nil,您也可以打印myFirstNamemyLastName而不会出现任何问题。 您几乎无法使用任何其他编程语言来执行此操作,因为该应用程序将崩溃。

 让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