我想弄清楚Swift泛型是如何工作的。具體而言,我無法找到關於編譯模型的精確聲明。在C++中,泛型(模板)並不是單獨編譯的,因爲它們被實例化(至少原則上)用於每個調用站點。相反,Java泛型是分別編譯的。 Swift的情況如何,關於單獨編寫仿製藥?Swift的泛型是否分別編譯?
4
A
回答
3
這是兩者的組合,具體取決於優化器決定哪些內容會獲得更好的性能。他們在WWDC Session 404: Advanced Swift結束時談論它。幻燈片說:
斯威夫特可以運行通用代碼直接
優化可以隨意產生的通用代碼專門版本
- 仿製藥的單獨編譯
- 更快的編譯
- 靈活性用於速度的貿易碼大小
1
從語義上講,它類似於C++的方式。在使用T
參數化的Swift通用函數中,可以在運行時直接使用T
(如T.self
)訪問事物。您也可以在C++中執行此操作,但不能在Java中執行此操作,此時泛型只能在編譯時和類型擦除之後進行。
相關問題
- 1. Swift 3,泛型,編譯錯誤
- 2. Swift 3中的泛型類別別名?
- 3. Swift:使用泛型類型associatedtype的實例segfaults編譯器
- 4. 分配和泛型編譯問題
- 5. 的Java編譯泛型
- 6. 泛型的編譯方案
- 7. Java泛型 - 編譯錯誤
- 8. Java泛型編譯錯誤
- 9. 泛型編譯錯誤
- 10. Swift中泛型的泛型3
- 11. 編譯錯誤泛型類型
- 12. 有界的Java的泛型不編譯
- 13. 是否有可能創建編譯時檢查參數化泛型類型?
- 14. 奇怪的泛型編譯錯誤
- 15. 泛型上的JSP編譯錯誤
- 16. 泛型編譯錯誤的Java 8 7
- 17. Swift flatMap和泛型
- 18. Swift 4 Codable&泛型
- 19. 如何檢查一個泛型是否是Swift中其他泛型類型的子類?
- 20. 是泛型運行時還是編譯時多態?
- 21. Swift中通用的泛型
- 22. Swift的泛型和子類
- 23. Swift中的泛型2.0
- 24. Swift:帶回調的泛型
- 25. Swift中的泛型函數
- 26. 泛型繼承編譯錯誤
- 27. 使用MutableClassToInstanceMap與泛型編譯錯誤
- 28. Java泛型:編譯器錯誤在eclipse
- 29. 甲泛型混亂:欺騙編譯
- 30. 編譯錯誤instanceof和泛型
我似乎記得今年在其中一個WWDC高級會議視頻中討論了這個問題。不能更具體,雖然對不起:) – 2014-09-18 16:16:38