我正在寻找在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绑定中使用它们来处理按钮点击事件,我不关心事件本身,我只需要知道按钮被点击。
答案 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")
。