# Day13--你到底爱不爱我?我们来解包这个Optional

之前在阅读相关文章的时候,算是刚接触Optional这个概念,对於可选的概念,觉得很模糊,不过後来知道值的「有或无」後,开始比较能理解其中的概念。我在下面会尽量以简单的语言解释Optional在Swift中是怎麽样的概念:

Optional(可选项)基本上会用到两个符号:“!”and”?”
Optional是一种暧昧的状态:“可能有值”或“根本没有值”

何谓空值?

nil 代表的意思就是“这个常数或变数中没有值”,但不是为 0 的意思,因为 0 也是值。(Jeremy Xue,2017)

咀嚼上面的字眼,nil的概念就是描述 “没有东西” or “nothing” 的状态

为什麽需要Optional(可选项)?

在写Swift的时候,我们都会需要先宣吿东西,比如:

但假若今天我们想要宣告一个东西是“没有内容”(nil)的时候,这个时候Optional的概念就派上用场了。

实用Optional的时候,基本上围绕在几件事情上:
Wrapped(包裹)、Force-unwrap(强制解包)
宣告Optional

又可以称为Wrapped(包裹)
你可以在下面发现”?”出现在宣告中,这是告诉Swift,我们现在将declare这个变数宣告为“没有内容”或“可能有内容”的意思。总之就是暧昧啦…..

解包(Unwrap)

简言之,就是你刚宣告的那个Optional,现在要把它解开,而解开方式一共有五种:

  1. 强制解包

  1. if检查

  2. 可选绑定(Optional binding)

总而言之,依照可选绑定的逻辑,possibleNumber这个常数如果有赋值的话,在实际运作上就可以被打印出东西来

  1. ??(Nil Coalescing Operator)

  1. guard语句

guard语句的判断,是基於布林值的,也就是我下面提及的部分,将possiblenumber文字转换为数字。Int(possiblenumber)会变成True,也就是“有”东西

Int(possiblenumber)会变成False,也就是“没有”东西

基本上大概介绍这五种对於可选项的解决办法,大概可以说:
稍微对於「可选」这个概念有一些初步的认识。

tags: 铁人赛

<<:  [Day28] 透过GCP实作(4/4):透过Scheduler与Pub/Sub使抓取资料自动化

>>:  Day 13 Flask Route

Spring Framework X Kotlin Day 19 Reactive Repository

GitHub Repo https://github.com/b2etw/Spring-Kotlin...

【Bootstrap 5 客制化教学 - 6】BS5 utilities 客制化,让他变得跟 TailwindCSS 一样强!

其实 BS5 utilities 原始码打开有让我有惊艳的感觉,整体有重写过,所涵盖的功能也蛮适用...

(Day 28) DevOps

What is DevOps DevOps is nothing but a set of phil...

简报版-第十一章-从网址看问题,短网址的风险?真实网域的辨别?

其实原本最初规画想要做Index方式的纪录,然後多增加一些没写到的面向 不过,总是计画赶不上变化 ...

[Day 15] epoll

前言 在系列文的第二篇我就提到过, 一个非同步运行框架, 应该要含有两种架构, 一个是能够 mult...