美文网首页
Swift中的可选变量

Swift中的可选变量

作者: windgo | 来源:发表于2015-05-26 19:23 被阅读1006次

Swift中的可选变量

optional翻译成中文是”可选择的”, 在Swift里它标识一个变量可能为nil.
作为一个曾经搞过C++/C#/Java的人, 理解了十几遍, 才基本理解这个概念. 只能说, 苹果你太牛逼了.

普通变量

普通变量呢, 必须有初始值.
好有一比, 作为一个富二代, 爹很有钱, 生下来就有车了, 必须得有车!

var 座驾:汽车=汽车("奥迪")

普通变量用起来是这样的:

座驾.发动()
座驾.加速()
座驾.甩尾()
座驾.刹车()

可选变量

大部分人投胎技术不行, 不是生下来就有车, 但是万一咱将来有车了呢? 所以刚开始没车的咋办呢? 苹果帮你想到了, 你可以声明一个可选变量, 初始如果你不设置的话, 初始值默认为空.

var 座驾:汽车? 

然后你买了车

座驾=汽车("迈拓"")

以后使用这个变量的时候, 就得这样使用:

座驾!.发动()
座驾!.加速()
座驾!.甩尾()
座驾!.刹车()

我擦, 我的车为啥和人家的不一样! 后面都有一个"!" 每次都用"!"来取实际值, 是不是看上去很傻.
别担心, 苹果帮你想到了. 怎么能一眼被人看出屌丝的本质呢?
所以可以这样声明一个可选变量:

var 座驾:汽车!

然后买了车:

座驾=汽车("迈拓"")

以后使用这个变量的时候, 就可以这样使用了:

座驾.发动()
座驾.加速()
座驾.甩尾()
座驾.刹车()

是不是和富二代家的车看起来一样了! 但是, 你的车还是奥拓...
而且, 如果你不设置值, 会报nil异常的

可选变量的好处

可选变量的唯一好处是可以处理nil的状态. 苹果应该是趋向于让你使用普通变量的.

可选链

class 天窗{
    var 宽度=20公分
}
class 汽车{
    天窗:天窗?
}
var 座驾:汽车?
let 天窗宽度=座驾?.天窗?.宽度

天窗宽度也许是nil,
也许是20公分, 如果是20公分, 那就是货真价实的20公分, 不是可选值哦

判断语句的语法糖

使用下面的方式, 可以免去nil判断.

if let 我的座驾=座驾{
    座驾.启动()
} 

看到没, 不用!了, "我的座驾" 是正常变量, 不是可选变量.

显示转换

var  座驾:汽车?
座驾=汽车("奥拓)
座驾?.甩尾()
let 真座驾无双=座驾!
真座驾无双.甩尾()

转换之后, 变成正常变量, 不是可选变量.

相关文章

  • Swift中的可选变量

    Swift中的可选变量 optional翻译成中文是”可选择的”, 在Swift里它标识一个变量可能为nil.作为...

  • iOS基础-- Swift基础知识总结2(可选变量,结构体,类,

    可选变量: 一. 在Swift中可选类型(Optionals),用 " ? " 号表示, 用于处理值缺失的情况...

  • swift中的可选变量

    一,可选变量的定义 二,强制解析 使用可选变量的时候需要使用!来解析可选变量里面的值(强制解析 forced un...

  • iOS 可选型与泛型

    可选型 在swift中,可选型是为了表达当一个变量值为空的情况。当一个变量值为空时,它就是nil。在swift中,...

  • swift学习目录

    Swift中的一些基础知识 Swift中的常量、变量、可选值 Swift中的控制流(if/三目/switch) S...

  • Swift的可选类型(Optional)—— 解包

    可选类型 ------- Optional swift中引入了可选类型————如果一个常量或变量,它的值可...

  • Swift—可选类型

    * 可选类型表示变量可以有值,也可以没有值* C 和 OC 中并没有可选类型这个概念* Swift 中只有可选类型...

  • swift学习笔记④

    Swift学习笔记 - 文集 语法篇 一、可选类型 Optional Swift 中,常量和变量是不允许赋予 ni...

  • optional可选值

    在Swift中, 变量(常量)可能有值,可能为 nil ,称为可选使用?标识某个值是一个可选值 可选项的值不能直接...

  • Swift学习 day1

    Swift学习 day1 声明变量 使用var进行变量声明: 使用let进行常量声明: 可选类型声明: Swift...

网友评论

      本文标题:Swift中的可选变量

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