加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

《从零开始学Swift》学习笔记(Day 27)――可选类型

发布时间:2020-12-14 07:13:26 所属栏目:百科 来源:网络整理
导读:原创文章,欢迎转载。转载请注明:关东升的博客 可选类型: 我们先看看如下代码: varn1:Int=10n1=nil//编译错误letstr:String=nil//编译错误 Int 和 String 类型不能接受 nil 的,但程序运行过程中有时被复制给 nil 是在所难免的, Swift 为每一种数据类型

原创文章,欢迎转载。转载请注明:关东升的博客

可选类型:

我们先看看如下代码:

varn1:Int=10
n1=nil//编译错误

letstr:String=nil//编译错误


IntString类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!),修改前文示例代码:

varn1:Int?=10
n1=nil

letstr:String!=nil


Int?String!都是原有类型IntString可选类型,它们可以接受nil

可选类型值拆包

在可选类型的问号(?)或感叹号(!)究竟有什么区别呢?这与可选类型的“拆包”(unwrapping)有关,拆包是将可选类型变成普通类型,如果我们直接打印非空的可选类型值,代码如下:

varn1:Int?=10
print(n1)


输出的结果是Optional(10),而非10。所以试图计算表达式n1+ 100会发生编译错误,代码如下:

varn1:Int?=10
print(n1+100)//发生编译错误


需要对可选类型值进行“拆包”是必要地。

“拆包”分为显示拆包和隐性拆包。

使用问号(?)声明的可选类型,在拆包时需要使用感叹号(!),这种拆包方式称为“显式拆包”;

使用感叹号(!)声明的可选类型,在拆包时可以不使用感叹号(!),这种表示方式称为“隐式拆包”。

看看下面代码:

varn1:Int?=10
print(n1!+100)//显式拆包

varn2:Int!=100
print(n2+200)//隐式拆包


欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

wKioL1bWSHjwUPTDAAAs2MBEZnc262.png

更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读