Swift中?和!的区别
博客专区 > evil_01 的博客 > 博客详情
Swift中?和!的区别
evil_01 发表于2年前
Swift中?和!的区别
  • 发表于 2年前
  • 阅读 65
  • 收藏 0
  • 点赞 2
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: Swift中?和!的区别

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)声明隐式拆包变量,一般用于类中的属性
标签: swift
共有 人打赏支持
粉丝 9
博文 34
码字总数 20673
×
evil_01
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: