假设我有一条“类似于函数”的记录,至少在某种意义上说它代表可以应用于某些参数的操作。
我可以通过实现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
是好的做法吗?这种方法有什么陷阱吗?
最佳答案
我很惊讶它还没有。记录应该是"a complete implementation of a persistent map"。因此,回答您的问题,我希望它是它的键的功能,就像地图一样。其他任何事情都会令人惊讶。