在clojure中定义无参数函数的快捷方式

时间:2014-10-21 17:51:50

标签: clojure

我正在寻找在clojure中定义无参数函数的快捷方式:

=> (def x (fn [] (println "test")))
#'x
=> (x)
test
nil
=> (def y (println "test"))
test
#'y
=> (y)
NullPointerException   core/eval2015 (form-init5842739937514010350.clj:1)

我真的想避免输入fn []。我知道lambda表示法#()但它需要至少一个参数。我会在GUI绑定中使用它们来处理按钮点击事件,我不关心事件本身,我只需要知道按钮被点击。

2 个答案:

答案 0 :(得分:2)

user> (def y #(println "test"))
#'user/y
user> (y)
test

答案 1 :(得分:2)

除了noisesmith的回答(这是问题的正确答案),在这种特殊情况下你也可以这样做:

(def y (partial println "test"))

会在调用test时打印(y),或在调用test hello时打印(y "hello")