问题
Using defn or fn it's easy to create a function that taking one argument that ignores it and returns 1:
(defn ret1 [arg] 1)
(fn [arg] 1)
Is it possible to do this with the #() macro? I don't mean using something ugly or "cheating" like
#(/ % %) or
#(if (nil? %) 1 1)
I mean literally ignoring the parameter and returning 1. I can't find a clean syntax that works.
回答1:
#(do %& 1) ... but (constantly 1) is better.
回答2:
The #() syntax can't be used to create functions that have unused parameters in the way your description requires. This is a limitation of the #() reader macro.
I would recommend not using #() and instead just writing (constantly 1) which is a very brief way to create a function that ignores a parameter and instead always returns 1.
回答3:
How about #(identity 1)? which does the same thing as #(do %& 1) or (constantly 1).
来源:https://stackoverflow.com/questions/5005437/anonymous-function-returning-1-using