var age:Int?=10var 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?=nilvar age0 =Optional<Int>.nonevar age1:Optional<Int>=.none
var age:Int?=.none
age =10
age =.some(20)
age =nil
switch age {caselet v?:print("some", v)casenil:print("none")}switch age {caselet.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 =nilswitch age {caselet v?://可选项绑定,不会自动解包print("1", v)caseletnil:print("2")}//等价于iflet 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?=10var age:Int??= age_
age =nilvar age0 =Optional.some(Optional.some(10))
age =.nonevar age1 =Optional<Optional>=.some(.some(10))
age1 =.none