SwiftUI Swift内功之Swift 中的 some vs any
介紹
some
- 持有混凝土類型
- 保證類型關(guān)系
any
- 持有任意具體類型
- 擦除類型關(guān)系
#正文
在本文中,我總結(jié)了 WWDC 2022 關(guān)于“some”和“any”的會(huì)議內(nèi)容。
代表特定具體類型的占位符的抽象類型稱為不透明類型opaque type。被替換的具體具體類型稱為基礎(chǔ)類型underlying type。
對(duì)于具有 opaque 類型的值,底層類型對(duì)于值的范圍是固定的。這樣,使用該值的通用代碼保證每次訪問該值時(shí)都獲得相同的底層類型。
使用“some”關(guān)鍵字的類型和尖括號(hào)中的命名類型參數(shù)都聲明了不透明類型。
some Animal <T: Animal>不透明類型可用于輸入和輸出,因此可以在參數(shù)位置或結(jié)果位置聲明它們。功能箭頭是這些位置之間的分界線。不透明類型的位置決定了程序的哪一部分看到了抽象類型,而程序的哪一部分決定了具體類型。
命名類型參數(shù)總是在輸入端聲明,所以調(diào)用者決定底層類型,實(shí)現(xiàn)使用抽象類型。
func getValue<T>(Parameter) -> Result通常,為不透明參數(shù)或結(jié)果類型提供值的程序部分決定了底層類型,而使用該值的程序部分看到了抽象類型。因?yàn)榛A(chǔ)類型是從一個(gè)值推斷出來的,所以基礎(chǔ)類型總是來自與值相同的位置。對(duì)于局部變量,底層類型是從賦值右側(cè)的值推斷出來的。
let animal: some Animal = Horse()這意味著具有 opaque 類型的局部變量必須始終具有初始值&
總結(jié)
以上是生活随笔為你收集整理的SwiftUI Swift内功之Swift 中的 some vs any的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pol-tl导出word
- 下一篇: 10 款开源工具