文档章节

Swift中?和!的区别

evil_01
 evil_01
发布于 2016/05/19 14:11
字数 475
阅读 85
收藏 0

1.常量和变量

Swift语言中是用let来定义常量,并且要初始化。var来定义变量,在let或者var后面申明类型,冒号+空格,然后再加上类型名称

2.optional(可选)变量 可选变量用于处理值缺失的情况,有点类似于OC中的nil,可以用于任何类型上,不仅仅是类,不过更加安全。Swift是类型安全的一门语言,可以很少申明类型 Swift和Objective-C中nil的区别 1)OC中,nil是一个指向不存在对象的指针; 2)Swift中,nil不是指针,它是一个确定的值,用于表示值缺失。任何类型的可选状态都可以设置为nil,不只是对象类型;

3.深入了解Optional变量 Optional其实就是一个enum,里面有None和Some类型。nil就是Optional.None,非nil就是Optional.Some,通过Some(T)包装原始值,所以在是用Optional的时候要进行拆包。 声明一个可选类型的时候要在类型后面加上? 如:var str : String? var strValue: String? 意思不是“我声明了一个Optional的String值”,而是我声明了一个Optional类型值。 对一个可选类型的值,需要进行拆包才不会报错。 拆包有两种方式,如下: 1)Optional Binding 如: ``` if let str = strValue { let hashValue = str.hashValue }

2)通过! str!
对于会在viewDidLoad进行初始化的变量,可以直接定义为var str :String!叫做Implicitly Unwrapped Optionals,称为隐式拆包,在进行操作的时候也需要添加!进行拆包。

?的使用场景:
1)声明Optional值变量
2)在对Optional值操作中,用来判断是否能响应后面的操作

!的使用场景:
1)强制对Optional值进行拆包
2)声明隐式拆包变量,一般用于类中的属性

本文转载自:http://blog.csdn.net/hnuzengchao/article/details/50059887

共有 人打赏支持
上一篇: java 多态 回顾
下一篇: Swift中的HTTP请求
evil_01
粉丝 9
博文 45
码字总数 29244
作品 0
卢湾
架构师
私信 提问
swift的数据类型到底是什么尿性 (说点别人没讲明白的)

文初: 如果你对swift的些许了解只局限在 swift中的类型使用struct取代class 多了Optional可选类型 这些最基础的认知,而对其底层设计的原因和原理了解甚少,那这篇文章会给你新的视角,让你...

CoderDancer
2017/08/22
0
0
Swift 个人学习笔记 - 08: 类和结构体

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/03/10
0
0
[swift]-字符串和oc字符串的对比使用

swift中字符串和oc字符串的区别: > 1:swift字符串的类型是String,oc 字符串的类型是NSString > 2:swift字符串的写法是"123",oc字符串的写法是@"123" swfit中字符串的类型为什么是String ,它...

XJDomain
2016/07/31
18
0
Swift编程权威指南第2版 读后收获

  自从参加工作一直在用OC做iOS开发。在2015年的时候苹果刚推出swift1.0不久,当时毕竟是新推出的语言,大家也都很有激情的学习。不过在学完后发现很难在实际项目中使用,再加上当时公司项...

滴水微澜
08/14
0
0
Swift面向协议编程总结

Swift面向协议编程 所谓面向协议编程,就是使用声明方法,然后使用提供默认的实现,只要需要使用到该方法的类遵循该,就可以直接使用该的实现。 代码复用 继承:会带来耦合。 继承的代价:这...

一蓑烟羽
2017/11/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式 之 模板模式

设计模式 之 模板模式 抽象类定义了执行的方法(方法包含若干步骤),具体的步骤由子类重写实现。 使用场景 有多个子类共同的步骤方法 有重要的、复杂的共用方法 代码 由于模板模式比较简单,...

GMarshal
22分钟前
0
0
hadoop安装步骤

1.下载安装包(下载地址可网上查找,还要安装jdk,网上都有,在这就不列举了,这里用的是hadoop 3.1.1版本) 2.配置环境变量,并让它生效,执行命令 source /etc/profile JAVA_HOME=/usr/java/...

talen
25分钟前
0
0
txt转mobi格式

txt2mobi kindle对txt格式支持不好,无法识别章节。还是需要转换成mobi格式才可以。但一般txt转mobi的方法都是通过先将文档改成html格式(章节名用h1标签,段落用p标签),再通过calibre或kin...

zhnxin
38分钟前
0
0
一个三年Java工程师的面试总结

前言: 15年毕业到现在也近3年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服)、网易、滴滴、点我达,最终收到点我达和网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有幸去...

别打我会飞
49分钟前
3
0
Linux虚拟机安装VmwareTool

1.点击虚拟机: 2.点击安装Vmware-Tools,出现如下界面,将圈起来的拖动到桌面 3.接着打开终端,执行解压缩命令 tar -xzv -f VMwareTools-10.2.5-8068393.tar.gz 这个后面的VMwareTools-10.2....

陈刚生
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部