一份正在等待展开的礼物

Optionals是一种新型的数据,我可以用它来解决问题。 它有一个有趣的环,但是作为一个新的程序员进入Swift领域,似乎总是不得不担心这个可选值很麻烦。

可选参数可以分配给任何类型,它表示该属性可以存在,也可以不存在。 当我第一次读到它时,说实话似乎毫无意义。 为什么我需要编写一个值可能为零的属性? 这一定是在开玩笑。 但是可以肯定的是,随着时间的流逝,它们开始出现……随处可见!

Swift文档到处都是可选选项,要弄清楚何时获得它,无论是强制拆开还是自然地拆开它,都是一件痛苦的事情。 真麻烦。 但是最近我已经开始了解它,它很棒!

首先,能够在运行时将值设置为nil,然后在闲暇时将其填充是令人不寒而栗的! 不再需要在继承自某些怪物的类中初始化对象,而我甚至不想覆盖它们。 将它们设置为可选,如果您肯定它们将在整个应用程序中存在,请使用Bang运算符!

如果该属性可能为nil,但是其值可以存在或不存在,则将其留给老式的好问号?

我最近的代码已开始使用可选的拆包程序充当我的布尔值。 我有一个多余的地方,在那儿我做了一个Bool检查,然后才拆开我的财产来对其做更多的事情。 我现在可以解开一只鸟杀死两只鸟。 如果属性值为nil,则尚未设置任何内容,如果具有值,则已设置了该值。 就我的代码而言,我的僵尸正在检查它是否可以攻击人。 它的目标属性通常为nil,但是在分配了目标后,它将开始其攻击过程。

如果contactedPlayer返回一个值,则启动攻击计时器并造成一定的损害,否则,将计时器重置为零。 正是在这一点上,我觉得我在所有可选东西上都被卖了。 现在,随着对它的理解的扩展,我越来越多地使用它。

在此代码段中,只要屏幕上发生触摸,位置值就会传递给播放器的newPosition属性。 我的功能将检查每个框架调整过程,直到到达位置为止,然后将其设置为nil,以便停止。

我曾经不得不与许多布尔斯打交道,以确保我的球员移动不太多。 现在,一个简单的可选控件及其展开即可解决所有这些问题。

可选的最棒的用法可能就是这个。

设置许多属性而无需初始化。 我知道所有这些属性都存在,因为我在应用程序加载后立即给它们赋值,而在我需要在代码中使用它们之前。

因此,让所有人都习惯使用可选选项,我觉得一旦我们对它们有了一个不断的需求。

快乐的编码。