‫欢迎回来｡
‫在这段视频中, 我们将调查贵族｡
‫贵族是其他编程语言中常见的概念｡
‫例如, Swift非常广泛地使用它们, 在那里它们被称为期权｡
‫所以它们是可以有值也可以没有值的变量｡
‫所以有两个选择, 对吧？
‫所以要么某个东西有值, 要么没有值, 通常是空的, 要么没有.
‫所以让我们创造一些｡
‫顺便说一下, 它是一个数据类型, 所以数据类型可以为空也可以不为空｡
‫通常情况下, 就像你们在这里看到的Nullarbor, 比如说整数32型的Nullarbor｡
‫所以这就是你通常的写作方式, 你会怎么写｡
‫那是32分钟的纳拉伯｡
‫因此, 估计的值可以从-20亿到+20亿｡
‫所以让我们继续创建它们｡
‫所以为了创建一个小说, 你只要在数据类型后面加一个问号｡
‫如果你想得到一个整数Nullarbor, 就像我刚才写的那样, 你只要用问号结束, 我就把这个数叫做1,
‫它是空的.
‫让我们创建另一个名为NOM2的变量, 并将其设置为NULL｡
‫正如你所看到的, 我们在这里得到了一个错误, 它抱怨说, 不能将null转换为int,
‫因为它不是或一个不可知的值类型｡
‫因此, 不能将null赋给整数｡
‫这就是你在这里所说的C, 但是你可以把null赋给一个全局整数, 我们在第9行已经做过了｡
‫好的, 我们再创建一个, 它将是数字2, 它将是1337, 1337｡
‫这就是如何继续创建一个肘部｡
‫当你看到它不是空就是有值的时候｡
‫双打也是一样｡
‫所以打两个问号｡
‫第三个是新的双问号｡
‫这也是多重双精度浮点数赋值的方法｡
‫所以这一个是空的, 或者这里的数字4是3｡ 14157.
‫这就是圆周率｡
‫布尔值也是如此｡
‫这是一个多重布尔值, 我会说Boo Vol是一个新的布尔问号｡
‫现在让我们来看看｡
‫让我们把它显示在屏幕上, 看看我们得到了什么｡
‫看看我们的全局数是多少, 我们用01｡
‫二和三｡
‫这将是第一位｡
‫麻木归麻木｡
‫三号和四号｡
‫现在, 当然, 它在抱怨, 因为我需要在这里结束我的字符串｡
‫好吧, 我会的
‫让我们也显示一下bool｡
‫所以c w的多重布尔值是和bool vol｡
‫现在好了
‫让我们试试控制f5｡
‫而我们的可知数, 如你所见, 是零｡
‫所以它甚至不是一个空的空间｡
‫没什么
‫一, 三, 三, 七, 没有和31415, 七｡
‫而空布尔值是空的｡
‫所以你可以看到, 它可以是什么也不是, 它没有抱怨｡
‫所以即使没有价值, 它仍然是好的｡
‫它不会破坏我们的程序或类似的东西｡
‫如果你想对一个未知的整数做同样的事情, 那么我们就创建一个叫5的整数,
‫就像这样｡
‫所以我们没有初始化它, 它也是空的, 对吗？
‫所以如果我试图访问这个值, 它就没有任何价值｡
‫我在这里用第五个｡
‫让我们来看看｡
‫控制五个｡
‫正如你所看到的, 我们有构建错误, 所以我们甚至不能停止它, 因为它说使用了未赋值的局部变量5｡
‫所以这就是重点｡
‫你创建了一个变量, 它可以是空的, 也可以是非空的, 这对程序来说完全没问题｡
‫它不会坠毁的｡
‫你为什么要用这个？
‫诺布尔的想法是什么？
‫假设你有一个处理大量数据的程序, 它有用户数据, 并从数据库中获取｡
‫而对于某些值或某些列, 则根本没有条目｡
‫假设我们有用户名｡
‫我们有个人的名字或名字, 姓氏, 然后我们有生日等等｡
‫所有这些信息都可以存储在我们的数据库中, 但对于大多数用户, 我们只有用户名｡
‫我们不知道他们的姓和名｡
‫我们没有密码或电子邮件地址, 什么都没有｡
‫我们只有用户名, 但我们仍然希望我们的程序正常工作｡
‫所以我们就用贵族好了｡
‫如果没有价值｡
‫它们不会使我们的程序崩溃｡
‫所以让我们把它作为一个非常, 非常通用的例子｡
‫这里我将使用一个布尔值, 它是一个多重布尔值, 我将把它命名为Ismael, 并将它设置为NULL.
‫在这里我只需要检查一下是邮件, 它是空的还是真的？
‫如果是真的, 我们写用户是邮件, 如果邮件是假的, 我们写用户是女性｡
‫最后, 我们会说没有性别选择, 或者说没有性别可以被找到, 或者类似的话,
‫我们是｡
‫所以现在你可以继续使用这种方法｡
‫好吧, 我知道了
‫我把它放到下一行｡
‫当然, 如果我们做得那么好, 我们就不会选择性别｡
‫在我的例子中, 我的程序在它说了这些之后会立即关闭｡
‫现在也是｡
‫某个地方出错了｡
‫我怎么知道呢？
‫好吧, 就是这一个｡
‫所以我在我的文本中仍然有这个, 它正在尝试访问它｡
‫但是缺少了一些东西, 所以这就是为什么它不起作用｡
‫好了, 现在我们可以再试一次了｡
‫控制F五和我们是我们的可知数是｡
‫没关系的
‫这里没有性别选择｡
‫好吧, 我会的
‫这都是好东西｡
‫但是如果你想把一个容易受骗的人变成一个不容易受骗的人呢？
‫好吧, 让我们来试试｡
‫让我们在这里创造一个容易受骗的替身｡
‫让我们称之为第五, 它将是13｡ 1, 然后乘以2,
‫或者我们称之为6, 因为我们这里有个5, 我们从来没有用过, 我就把它放在这里.
‫不会伤害任何人的｡
‫所以第七个是空的｡
‫那么我如何把它们转换成一个非知识型的, 我将创建一个NUM, 8, 它将是一个非知识型的double｡
‫所以这是一个普通的双曲, 对吧｡
‫它不能为null, 也不能将null赋给它｡
‫现在我们只要检查如果数字6等于null那么数字8就是0｡ 0.
‫否则我们就说数字8应该是数字66｡
‫但是这里有个问题, 因为你可以看到我们输入了, 我不能直接赋值, 它说不能隐式地将double类型转换为double,
‫问号, 但存在显式转换｡
‫你是不是缺石膏了？
‫这就是我们需要做的｡
‫所以我们需要把它转换成一个双精度型因为我们需要知道, 如果它不是现在的, 那么num6在内部是一个双精度型, 所以它包含一个双精度型值.
‫所以我将使用它并将其赋值给NUM eight, 这样我们就可以继续显示NUM
‫eight的值｡
‫让我们从控制f五开始
‫如您所见, NUM 8的值是13｡ 1.
‫因此, 转换, 显式转换工作｡
‫然而, 有一种更快的方法可以做到这一点｡
‫所以如你所见, 这是相当大的努力｡
‫我们需要这个｡
‫如果是LS, 我们可以使用空合并运算符｡
‫所以我们可以说数字8等于数字6｡
‫问号｡
‫问号8｡ 例如53｡
‫所以如果num six是空的, 那么继续加或者输入8｡ 53如果没有, 那就做别的事情｡
‫我现在要做的就是再加一行, 写一个类似于num,
‫eight的值, 实际上我们复制一下, 因为我们需要两次, 我不想输入太多,
‫所以现在我们再试一次｡
‫让我们看看区别｡
‫如您所见, NUM 8的值是13｡ 1数字8的值为13｡ 1且NUM八的值为8｡
‫53.
‫这里发生了什么事？
‫在第50行忽略了什么, 因为它说, 嗯, 它是, 我赋值8｡ 53分｡
‫但现在看来, 我才六岁｡
‫有一个价值, 它被占用｡
‫所以当6有一个值时, 就取了13｡ 因为数字7没有值, 所以数字8现在是8｡
‫53, 因为如果我们查看它, 数字7是空的, 所以我们给它赋了一个不同的值｡
‫所以这就是所谓的我只是要｡
‫给你抄一份｡
‫空折叠运算符｡
‫两个问号｡
‫所以如果你想从一个普通类型转换成一个不可移动类型, 那么你可以使用null合并运算符｡