Monthly Archives: June 2022

Swift Protocols and Generics, Part 2: Protocol as Type 和 Type Erasure 有什麼關係?

這是一系列以「建構基礎概念」為目標,希望能幫助 Swift 開發者更加瞭解 protocols 和 generics 的文章。文章索引、相關資源以及較詳細的介紹,請見系列簡介。希望讀者在看到文章裡提出問題的時候(請注意 [Q] 標示),能夠一起試著解釋看看,好深化你個人的理解。

上次在 Part 1 裡,我們試著分辨 protocol 和其他的 type 有什麼不一樣。當 protocol 作為 type 使用時,它被稱為 existential type。本篇會假設讀者已經熟悉 Part 1 的內容。

這次的篇幅較長,但是與其拆成數篇,我想把閱讀方式交由讀者自己決定。如果這些對你來說是比較不熟悉的概念,我建議分次分段閱讀,這樣吸收的效果會更好。

Essential Question

如果有人問你這個問題,你會怎麼解釋?[Q]

核心問題:

Protocol as type,也就是 existential type,和 type erasure 之間有什麼關係?

延伸問題:

Type erasure 有什麼替代方案?它們和 type erasure 有什麼性質上的不同?

Continue reading