2011-04-12 38 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 

我发现这是有时一个有用的技巧......

相关问题