如何在Clojure中创建可调用对象?

如何在Clojure中创建可调用对象?,clojure,callable,Clojure,Callable,如何在Clojure中创建可调用类型或对象 例如,我如何定义一个记录Foo,其中包含一个值:bar,可以调用它来打印该值 user=> (def foo (Foo. "Hello world")) user=> (foo) Hello World user=> (:bar foo) "Hello World" ((Foo.“你好,世界!”) ;;=>你好,世界 (:bar(Foo.“你好,世界!”) ;;=>“你好,世界!” …这样做是否是个好主意是另一个问题 你为什么不

如何在Clojure中创建可调用类型或对象

例如,我如何定义一个记录
Foo
,其中包含一个值
:bar
,可以调用它来打印该值

user=> (def foo (Foo. "Hello world"))
user=> (foo)
Hello World
user=> (:bar foo)
"Hello World"
((Foo.“你好,世界!”)

;;=>你好,世界

(:bar(Foo.“你好,世界!”)

;;=>“你好,世界!”

…这样做是否是个好主意是另一个问题



你为什么不建议这样做?
(defrecord Foo [bar]
  clojure.lang.IFn
  (invoke [_] (println bar)))
(defrecord Foo [bar]
  clojure.lang.IFn
  (invoke [_] (println bar))
  (applyTo [this args] (clojure.lang.AFn/applyToHelper this args)))