2011-04-12 83 views

回答

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 

我發現這是有時一個有用的技巧......

相關問題