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 &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值