何時何地將類型註釋放入Clojure代碼中?顯然,當表現很重要時。但是有什麼規則可以在什麼時候(只在執行Java Interop?時)以及在何處添加它們(函數定義參數)?何時何地將類型註釋放在Clojure代碼中?
回答
的首要原因,我「米知道的是性能。鍵入Clojure中暗示除去反射,這會降低性能。所以我會把類型提示中,我已經測得爲性能關鍵的功能。
有在clojure.org java的互操作部分中的description其中的言論:。
的Clojure支持使用類型的提示,以幫助編譯器在避免代碼通常情況下的性能關鍵領域的反思,應該避免直到存在已知的性能瓶頸時使用類型提示
... 一旦在標識符或表達式上放置了一個類型提示,編譯器就會在編譯時嘗試解析對該方法的任何調用。此外,編譯器將跟蹤任何返回值的使用並推斷其使用的類型等,因此只需要很少的提示即可獲得完全編譯時解析的一系列調用。請注意,靜態成員(或其返回值!)不需要類型提示,因爲編譯器始終具有靜態類型。
您可以隨時啓用反射標誌上的警告來查看反射被調用的位置,因此,類型提示可能會提供幫助。
編輯:
關於你的問題「只適用於java interop?」 - 沒有。即使在純粹的clojure應用程序中,類型提示也很有用。反射問題會降低性能,這是JVM生活中的一個現實問題,也是動態語言通常需要處理的問題。
關於其中type提示可以被放置,從clojure.org:
它們可以被放置在函數的參數,讓結合的名稱,變種名稱(定義時),和表達式:
我知道你已經接受了一個答案,這並不是對你的問題的直接回答,但劉剛發佈了一篇關於Functional Fluid Dynamics in Clojure的非常好的文章,這對於性能方面的類型提示非常有教育意義。
+1這是一篇很棒的文章。 – 2010-04-02 22:49:42
404 - 文章似乎已經消失:( – jocull 2014-12-02 18:05:23
[wayback machine](https://web.archive.org/web/20100403083120/http://www.bestinclass.dk/index.php/2010/03/功能流體動力學在clojure /)救援! – 2015-02-28 14:43:59
- 1. 如何將XML代碼放入IntelliSense註釋中?
- 2. PHP類型提示 - 代碼與註釋
- 3. 如何將註釋添加到Clojure中的通用類?
- 4. 代碼註釋:你是否將代碼註釋放在接口或混凝土類上?
- 5. 如何在代碼生成的註釋處理中檢索註釋的類類型?
- 6. 已註釋掉導致clojure運行時錯誤的代碼
- 7. 如何選擇性地在HTML文件中註釋PHP代碼?
- 8. 將VJET類型註釋轉換爲Closure類型註釋
- 9. 如何註釋代碼在JFLEX
- 10. 類型註釋
- 11. 如何動態放置地圖註釋?
- 12. 如何在放大時顯示地圖註釋?
- 13. 引用泛型類型的XML代碼註釋
- 14. 如何將ASM源代碼註釋放入OllyDbg的評論窗口中?
- 15. MyPy:極品類型的註釋,變量在Python 3.5的代碼
- 16. Javascript代碼註釋
- 17. 如何在使用Clojure解析XML時保留註釋?
- 18. ElementType.LOCAL_VARIABLE註釋類型
- 19. Restlet註釋類型
- 20. 類型註釋值
- 21. 如何將此代碼或類似的代碼放在不同的類中? (VB.NET)
- 22. 如何使用MEF在代碼中註冊類型?
- 23. 如何註釋掉已有多行註釋的代碼塊?
- 24. 如何註釋掉,一個註釋代碼
- 25. Python類型註釋:任何方式來註釋一個屬性?
- 26. 如何做p4單行代碼註釋?
- 27. 如何jsdoc註釋BackboneJS代碼?
- 28. PHP代碼註釋如何找到它?
- 29. 用於在Javascript中添加註釋/註釋的示例代碼
- 30. 泛型類型的註釋
在這種情況下什麼是靜態成員? – johnbakers 2016-05-12 18:19:28