假设我有一个“类似函数”的记录,至少在它代表可以应用于某些参数的操作的意义上。
我可以通过实现来使它作为一个函数工作clojure.lang.IFn
,比如:
(defrecord Func [f x]
clojure.lang.IFn
(invoke [this arg]
(f x arg))
(applyTo [this args]
(apply f x args)))
((->Func + 7) 1)
=> 8
(是的,我知道我刚刚重新实现了...的低级版本。partial
这只是一个例子:-))
制作记录是clojure.lang.IFn
一种好的做法吗?
这种方法有什么陷阱吗?