Swift --- 可选项本质

  • 可选项的本质是enum类型
public enum Optional<Wrapped> : ExpressibleByNilLiteral {
    case none
    case some(Wrapped)
    public init(_ some: Wrapped)
}
var age: Int? = 10
var age0: Optional<Int> = Optional<Int>.some(10)
var age1: Optional = .some(10)
var age2 = Optional.some(10)
var age3 = Optional(10)
age = nil
age3 = .none
var age: Int? = nil
var age0 = Optional<Int>.none
var age1: Optional<Int> = .none
var age: Int? = .none
age = 10
age = .some(20)
age = nil
switch age {
    case let v?:
        print("some", v)
    case nil:
        print("none")
}
switch age {
    case let .some(v):
        print("some", v)
   case .none: 
       print("none")
}
var age: Int? = 10
age = 20
age = nil
//等价于
var age1: Optional<Int> = .some(10)
age = .some(20)
age = .none

使用细节:

var age: Int? = 10
age = 20
age = nil

switch age {
    case let v?:         //可选项绑定,不会自动解包
        print("1", v)
    case let nil:
        print("2")
}
//等价于
if let v = age {        //可选项绑定,会自动解包
     print("1", v)
} else {
     print("2")
}
//等价于
switch age {
    case .some(let v):   //case let .some(v):
        print("1", v)
    case .none:
        print("2")
}

多重可选项(了解):

var age_: int? = 10
var age: Int?? = age_
age = nil

var age0 = Optional.some(Optional.some(10))
age = .none
var age1 = Optional<Optional> = .some(.some(10))
age1 = .none
var age: Int?? = 10
var age0: Optional<Optional> = 10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值