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)声明隐式拆包变量,一般用于类中的属性
如果你在隐式解析可选类型没有值的时候进行取值,会crash。和在没有值的可选类型里面拆包是一样的。
4.总结
可选类型在swift里面十分重要,在做项目的过程,要尤为重视可选变量,不然应用跑起来老是crash,并且debug也不方便找出错误来,不过Xcode提示功能也很不错,这里赞一个。总之,一定要谨慎。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。