首页 >Swift

听故事学Swift系列 - 小明与红包(optionals - 可选类型)

2015-09-02 09:28 编辑: suiling 分类:Swift 来源:Azen的简书

虽然都是基于Cocoa和CocoaTouch框架,虽然都属于动态运行模式的静态类型语言,但是Swift和OC两门语言之间的区别还是蛮大的。

所以,希望通过这么一个系列,以讲故事的方式,将Swift中的和OC区别较大的语法,概念,和生活中的点点滴滴相互映射,让知识融入生活,用生活融化知识。

哎呀我去,这B装的,我自己都脸红了╮(╯﹏╰)╭

熊孩子小明&他的月光族姑姑

  • 事一:

熊孩子小明要过7岁生日了,一大早就堵在家门口,向来给他过生日的亲戚们要红包,而且表示,不给红包就捣乱.

小明姑姑是个标准的月光族,在小明过生日的前一天才想起来,自己好像又月光了...怎么办?赌一把~ 不管银行卡里能取出来多少钱,都装进红包里塞给小明,嗯,空红包就空红包好了,反正姑姑尽力了,小明你要知道,姑姑其实是爱你的.

  • 知识点

a.optional类型的数据就像是一个红包,不管字符串还是结构体,都可以包进红包里.

b.红包的状态只有两种,一种是没包东西,一种是包了东西

 optional类型的数据值也只有两种,一种是nil,一种是非nil

 注意:nil在OC中,代表一个空指针,而在Swift中,只能用来表示Optional类型数据的状态 -- 红包是空的

c."不管银行卡里能取出来多少钱,都装进红包里塞给小明"这一句是想说明Optional的常见使用情形:当不确定一个对象有没有值的时候,可以使用Optional类型进行包装 - 如字符串的.toInt()方法(字符串可能根本就不能转换成int类型的数据)

  • 故事二

吃完蛋糕送走大家,小明兴高采烈地开始拆红包.哇!这个红包里包了好多毛爷爷!哇!这个红包里居然包了美金!哇!这个红包居然是空的!!!小明哭了,哭的好伤心,整个人都崩溃了.

  • 知识点

a.拆红包是指Optional类型数据的强制解析,解析方法为:在optional数据后面使用"!"

b.强制解析之前,一定要确保Optional类型的数据非nil哦!否则程序也会像小明一样,崩溃掉的

  • 故事

转眼间小明要过8岁生日了.回想起7岁时收到的空红包,小明早早准备了一个透明塑料袋,收红包的时候,要让大家当面把红包里面包的东西,先放进塑料袋里,然后才能进屋吃饭.如果没有东西装进塑料袋里,小明就撒泼打滚吐口水(好一个熊孩子-_-|||)

  • 知识点

这个故事讲的就是Optional类型数据的可选绑定.

通过可选绑定(optional binding)可以判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在if和while语句中来对可选类型的值进行判断并把值赋给一个常量或者变量。

if let 塑料袋里的钱 = 红包里的钱() {
    小明.高高兴兴亲一个方法
} else {
    小明.撒泼打滚吐口水方法
}
  • 故事

小明长大了,知道让亲戚们当着面把红包打开的行为不太好,也不在意有一些无良亲戚给空红包的行为了.他学会了装糊涂(怎么突然变化这么大-_-|||).虽然在拆到空红包的时候还是会崩溃。

小明知道了谁值得信赖,红包里一定有票票,即使当面拆开也不会让自己崩溃;谁不值得信赖 -- 不值得信赖的人的红包,就不拆了吧。

这就是成长啊。

  • 知识点

隐式解析可选类型

有时候在程序架构中,第一次被赋值之后,可以确定一个可选类型总会有值。在这种情况下,每次都要判断和解析可选值是非常低效的,因为可以确定它总会有值。

这种类型的可选状态被定义为隐式解析可选类型(implicitly unwrapped optionals)。把想要用作可选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选类型。

当可选类型被第一次赋值之后就可以确定之后一直有值的时候,隐式解析可选类型非常有用。隐式解析可选类型主要被用在 Swift 中类的构造过程中

一个隐式解析可选类型其实就是一个普通的可选类型,但是可以被当做非可选类型来使用,并不需要每次都使用解析来获取可选值。

尾声

嗯,小明的故事结束了!以后一定不要给自己的小辈包空红包哦!否则他长大了,就不会隐式解析你了哦!哈哈

本文知识点部分参考自易百 特此感谢~

搜索CocoaChina微信公众号:CocoaChina
微信扫一扫
订阅每日移动开发及APP推广热点资讯
公众号:
CocoaChina
我要投稿   收藏文章
上一篇:在Xcode7 Beta 6中如何使用 try? 函数
下一篇:在Swift中检查API的可用性
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0

综合评论

相关帖子

sina weixin mail 回到顶部