//: Playground - noun: a place where people can play
import UIKit
/*
1> 從可選鏈中進(jìn)行取值?.
2> 給可選鏈進(jìn)行賦值
3> 可選鏈調(diào)用方法
*/
// 1.創(chuàng)建三個(gè)類(lèi)
class Person {
var name : String = ""
var dog : Dog?
}
class Dog {
var weight : Double = 0.0
var toy : Toy?
}
class Toy {
var price : Double = 0
func flying() {
print("飛盤(pán)在飛ing")
}
}
// 2.創(chuàng)建類(lèi)的對(duì)象
let p = Person()
p.name = "why"
let d = Dog()
d.weight = 60.0
let t = Toy()
t.price = 100
p.dog = d
d.toy = t
// 3.可選鏈的使用
// 3.1.取出why的狗的玩具的價(jià)格
/*
該寫(xiě)法非常危險(xiǎn):
let dog = p.dog
let toy = dog!.toy
let price = toy!.price
*/
/*
該寫(xiě)法非常麻煩
if let dog = p.dog {
if let toy = dog.toy {
let price = toy.price
}
}
*/
// ?.就是可選鏈: 系統(tǒng)會(huì)自動(dòng)判斷該可選類(lèi)型是否有值
// 如果有值,則解包, 如果沒(méi)有值, 則賦值為nil
// 注意: 可選鏈條獲取的值,一定是一個(gè)可選類(lèi)型
if let price = p.dog?.toy?.price { // Double/nil
print(price)
}
let price = p.dog?.toy?.price
// 3.2.給why的狗的玩具賦值一個(gè)新的價(jià)格
// 如果可選鏈中有一個(gè)可選類(lèi)型是沒(méi)有值, 那么語(yǔ)句直接不執(zhí)行
p.dog?.toy?.price = 50
// 3.3.可選鏈調(diào)用方法
/*
該寫(xiě)法太麻煩
if let dog = p.dog {
if let toy = dog.toy {
toy.flying()
}
}
*/
p.dog?.toy?.flying()
手把手帶你學(xué)習(xí)Swift3.0(26):可選鏈
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 1.可選類(lèi)型的基本使用 2.可選類(lèi)型的應(yīng)用