一、可选链(optional chaining)
1.1-什么是可选链
1.2-注意事项
1.3-使用
class Car { var price = 0 }
class Dog { var weight = 0 }
class Person {
var name: String = ""
var dog: Dog = Dog()
var car: Car? = Car()
func age() -> Int { 18 }
func eat() { print("Person eat") }
subscript(index: Int) -> Int { index }
}
var person: Person? = Person()
var age1 = person!.age()
var age2 = person?.age()
var name = person?.name
var index = person?[6]
print(age1, age2, name, index)
输出:18 Optional(18) Optional("") Optional(6)
func getName() -> String { "jack" }
if let _ = person?.eat(){
print("eat() success.")
} else{
print("eat() fail.")
}
输出:Person eat
eat() success.
var person:Person?=Person()
var dog=person?.dog
print(dog)
输出:Optional(test.Dog)
var weight = person?.dog.weight
var price=person?.car?.price
print(weight,price)
输出:Optional(0) Optional(0)
test["t1"]?[0] = 111
test["t2"]?[2] += 10
test["t3"]?[0] = 88
print(test["t1"],test["t2"],test["t3"])
输出:Optional([111, 3, 5]) Optional([11, 13, 25]) nil
var num1: Int? = 1
num1? = 10
var num2: Int? = nil
num2? = 10
print(num1,num2)
Optional(10) nil
var dict: [String : (Int, Int) -> Int] = [
"sum" : (+),
"difference" : (-)
]
var result = dict["sum"]?(10, 20)
print(result)
Optional(30)