如何在 Clojure 中创建可调用类型或对象?
例如,如何定义一个记录 Foo
并采用单个值 :bar
来调用该记录来打印该值?
user=> (def foo (Foo. "Hello world"))
user=> (foo)
Hello World
user=> (:bar foo)
"Hello World"
最佳答案
(defrecord Foo [bar]
clojure.lang.IFn
(invoke [_] (println bar)))
((Foo.“你好,世界!”))
;; =>你好,世界!
(:bar (Foo.“你好,世界!”))
;; =>“你好,世界!”
...这样做是否是一个好主意是另一个问题。
<小时/>(defrecord Foo [bar]
clojure.lang.IFn
(invoke [_] (println bar))
(applyTo [this args] (clojure.lang.AFn/applyToHelper this args)))
关于clojure - 如何在 Clojure 中创建可调用对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4358528/