何時何地將類型註釋放入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. PHP類型提示 - 代碼與註釋
- 2. 如何將註釋添加到Clojure中的通用類?
- 3. 代碼註釋:你是否將代碼註釋放在接口或混凝土類上?
- 4. 如何註釋代碼在JFLEX
- 5. 如何在放大時顯示地圖註釋?
- 6. 引用泛型類型的XML代碼註釋
- 7. MyPy:極品類型的註釋,變量在Python 3.5的代碼
- 8. 類型註釋值
- 9. 如何將此代碼或類似的代碼放在不同的類中? (VB.NET)
- 10. 如何使用MEF在代碼中註冊類型?
- 11. 如何註釋掉已有多行註釋的代碼塊?
- 12. Python類型註釋:任何方式來註釋一個屬性?
- 13. PHP代碼註釋如何找到它?
- 14. 用於在Javascript中添加註釋/註釋的示例代碼
- 15. 如何在lightbox類型彈出框中播放嵌入代碼
- 16. Mapkit放大和縮小時的註釋類型?
- 17. 如何在此代碼中應用地圖? (Clojure)
- 18. 何時釋放C代碼中的內存?
- 19. 在文檔註釋中的html代碼
- 20. 在javascript中註釋掉代碼塊
- 21. 在代碼中使用PDF註釋
- 22. 流量類型註釋和有效的JavaScript源代碼
- 23. 如何從emf模型生成帶註釋的'java代碼'
- 24. 將代碼轉換爲Spring註釋
- 25. 將代碼更改爲android註釋
- 26. 何處放置hibernate註釋?
- 27. 如何在Clojure中創建一個本地類型?
- 28. 在C#中選擇性地禁止XML代碼註釋?
- 29. 註釋未放置在地圖上
- 30. 註冊過程如何在socialengine中工作?代碼如何/何時何地
在這種情況下什麼是靜態成員? – johnbakers 2016-05-12 18:19:28