我想提供一些以:字符開頭的clojure協議的方法。有什麼方法可以在Clojure中覆蓋這個嗎?我可以使用以「:」開頭的方法來定義Clojure協議嗎?
2
A
回答
3
不這樣認爲。 Clojure關鍵字是在讀者中實現的,我不認爲有任何方法可以重寫這種行爲。
當您使用關鍵字作爲函數時,相當於(get arg:keyword)。你可以擴展你在協議中實現ILookup的功能。
Joost。
3
聽起來像一個壞主意:冒號留給關鍵字,所以即使你可以這樣做,我認爲這會造成一些令人困惑的代碼。
你當然也可以,把一個函數所涉及的關鍵詞映射記錄中:
(defrecord Foo [])
(def foo (Foo. nil {:method (fn [a b] (* a b))}))
((:method foo) 7 10)
=> 70
我發現這是有時一個有用的技巧......
相關問題
- 1. 我可以使用PHP使用自定義協議嗎?
- 2. 可以;定義和使用協議
- 3. 使用Unoffical Airplay協議可以嗎?
- 4. 我可以在Delphi中創建自定義HTTP協議嗎?
- 5. 我可以在Objective-C協議中公佈類方法嗎?
- 6. 你可以發佈到用戶定義的協議URL嗎?
- 7. apache httpcomponent和sftp協議 - 協議可以使用嗎?
- 8. 我們可以使用http代理使用AMQP協議嗎?
- 9. 可以使用點符號來定義void方法嗎?
- 10. 我可以使用協議對象作爲NSDictionary中的鍵嗎?
- 11. 我可以使用協議相關的<base>標籤嗎?
- 12. AJAX可以使用HTTP或HTTPS以外的協議嗎?
- 13. 我可以在Nginx中使用Clojure嗎?
- 14. 我可以使用andFilterWhere([])搜索以?開頭的所有值嗎?
- 15. 我可以更新協議擴展中的指定屬性嗎?
- 16. 我可以在協議中使用init func嗎?
- 17. 我可以使用高級消息隊列協議(AMQP)嗎?
- 18. 我可以在WHERE語句中使用自定義方法嗎?
- 19. 我可以使用Module#定義類方法嗎?
- 20. 在Java 8中可以使用方法引用來定義/實現方法嗎?
- 21. 我可以在NSArray上使用自定義類方法來返回常量嗎?
- 22. 可以協議緩衝區被用來實現一個第三方協議
- 23. 我可以使用具有指定關聯類型的協議嗎?
- 24. 我可以在Clojure中部分調用Java方法嗎?
- 25. AIR應用程序可以編程來處理URL協議嗎?
- 26. 以下Clojure協議有什麼問題?
- 27. Swift協議可以是單身嗎?
- 28. 我可以使用phonegap調用我自定義的Objective C類的方法嗎?
- 29. USART協議設備可以與UART協議設備連接嗎?
- 30. 我可以使用私人方法嗎?