Swift 之 as区别

1.?

定义:用?修饰的常量或者变量,代表这是一个可选类型的常量或者变量,就是说这个量可以有值,也可以没有值。如下例子,如果num有值就是int类型,如果没有值那就是nil
例子:
  let num: Int?                        // nil类型
  let num: Int? = 2                    // int类型

2.!

定义:如果要操作一个可选类型的变量,并且你需要进行强解包的时候,你就会用到!。如果有值就会得到变量的值,如果为nil那么程序就会crash

例子:
  // 定义一个String的可选类型str,显示赋值,不会crash,正常。
  var str: String? = "皇晓晨"
  let message = "你好" + str!
  print(message)

  // 定义一个String的可选类型str,不进行显示赋值,会crash
  var str: String? 
  let message = "你好" + str!
  print(message)
  Fatal error: Unexpectedly found nil while unwrapping an Optional value (致命错误:在展开可选值时意外发现nil)

3.as

定义:有保证的转换,从派生类转换为基类的向上类型

场景1:(从派生类转换为基类,向上转型)
  class Animal {}
  class Cat: Animal {}
  let cat = Cat {}
  let animal = cat as Animal

场景2:(数值类型转换,消除二义性)
  let num1 = 10 as CGFlot
  let num2 = 10 as Int
  let num3 = (10 / 2) as Double
  
场景3:(switch语句中进行模式匹配)
  switch animal {
    case let cat as C
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值