可选类型

作者: buzaixian程序员 | 来源:发表于2017-11-13 10:45 被阅读39次

定义

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初学者,有不准确或者错误的地方请指出,会及时修改。谢谢。

相关文章

  • Swift 可选项

    可选项,也叫做可选类型。定义为可选类型后,可以设置为 nil 在类型名后面加个问号?来定义可选类型 可选类型如果不...

  • Swift3.0基本语法(五)——封包和拆包

    一、可选类型(Optional) 相对OC而言,Swift增加一种可选类型(Optional),可选类型...

  • swift语法--04可选类型

    swift语法--可选类型 可选类型 什么是可选类型: 一个变量可以有值也可以没有值, 我们就称之为可选类型 语法...

  • swift中的可选链

    可选链 可选项获取其属性,其属性本来不是可选类型,但也变成了可选类型。

  • Swift 可选类型Optional

    Swift 可选类型Optional [TOC] 前言 本将以Swift中的可选类型为入口,介绍: 可选类型的底层...

  • Swift 中的可选和拆包

    本文内容结构如下 可选操作以及可选类型 强制拆包 可选绑定 可选操作以及可选类型 var strValue:Str...

  • Swift:(五)可选类型

    Swift 可选(Optionals)类型 Swift 的可选(Optional)类型,用于处理值缺失的情况。可选...

  • Swift:基础(五)可选类型

    Swift 可选(Optionals)类型 Swift 的可选(Optional)类型,用于处理值缺失的情况。可选...

  • Optional可选类型

    1、可选类型的声明 在声明常量或者变量时,在类型的后面加问号(?),即表示它是可选类型。声明可选变量格式如下(可选...

  • 可选类型

    使用可选类型(optionals)来处理值可能缺失的情况。 可选类型表示: 有值,等于x 或者 没有值 注意:C和...

网友评论

    本文标题:可选类型

    本文链接:https://www.haomeiwen.com/subject/vriamxtx.html