可选类型

定义

Optional是Objective-C没有的数据类型,是苹果引入到Swift语言中的全新类型,它的特点就和它的名字一样:可以有值,也可以没有值,当它没有值时,就是nil。此外,Swift的nil也和Objective-C有些不一样,在Objective-C中,只有对象才能为nil,而在Swift里,当基础类型(整形、浮点、布尔等)没有值时,也是nil,而不是一个初始值,没有初始值的值,是不能使用的,这就产生了Optional类型

解读

1、可以认为可选类型就像一个生日礼物,像礼物盒外面那层精美的包装纸,拆开他们之后,也许里面什么都没有。
2、可选类型在每次访问的时候都会提前并检测它的值是否存在,但有时候根据程序结构就可以推断出可选类型在首次赋值之后必然存在值,这个时候,就不需要每次都检测值是否存在,如果确定一个可选类型的值一定存在,那么我们使用 "!" 进行解包获取它的值
3、把隐式解包可选类型当成自动解包的可选类型。即不是每次使用的时候在变量/常量后面加!,而是直接在定义的时候加!,这些可选变量定义为隐式解包的可选量(implicitly unwrapped optional)。
隐式解包的可选量的声明格式为:在希望标为可选的类型名称后面,用感叹号(!)代替问号(?)
隐式解包的可选类型主要用在一个变量/常量在定义瞬间完成之后值一定会存在的情况。主要用在类的初始化过程中。

个人总结

可选类型定义加感叹号(!),然后就直接用。

代码

var companyName:String?
print(companyName)
companyName = "然后故作谦虚的说金钱不是一切"
print(companyName!)

//隐式解包
var  schoolName:String! = "swift在我脚下"
print(schoolName)

注: 1、nil不能用于非可选类型的变量和常量。也就是说nil只能用在可选类型的变量和常量。
2、如果你声明了可选变量或常量,但是没有赋值,它们会被自动赋值为nil。
3、swift里的nil和OC里的nil并不一样,OC里的nil是一个指向不存在对象的指针;但是在swift中,nil不是指针,它是一个确定的值,用来表示值缺失。任意类型的可选状态的值缺失都可以赋值nil,并不只是对象类型可以赋值。
4、Swift中,’!’:强行解包,从可选值中强行获取对应的非空值,如果真的遇见nil,程序直接崩溃.

Swift初学者,有不准确或者错误的地方请指出,会及时修改。谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在编程世界中有一种非常通用的模式,那就是某个操作是否要返回一个有效值。 在 Objective-C 中,对 nil...
    风从虎云从龙118阅读 1,157评论 0 1
  • 1 变量和常量 常量&变量的使用原则:为保证数据的安全性尽量先用 let,只有需要改变的时候才使用 var 定义常...
    Coder_Fsh_Messi阅读 5,331评论 2 2
  • 可选类型 使用可选类型(optionals)来处理值可能缺失的情况。可选类型表示: 有值,等于 x 或者 没有值,...
    蛊毒_阅读 3,077评论 0 1
  • 大多数人习惯稳定的事物。即使有人说我喜欢改变,喜欢变化的东西,可是我认为他们也只是喜欢自己所倾向的事物变化,这部分...
    milk引猫阅读 4,410评论 0 0
  • 读完p91-101 3.1知觉历程(选择 组织 诠释 协商) 原文:直觉诧异,在干扰关系的同时也能增进人际关系,通...
    kidII阅读 1,709评论 0 1