使用defn或fn很容易创建一个函数,它接受一个忽略它的参数并返回1:
(defn ret1 [arg] 1)
(fn [arg] 1)
是否可以使用#()宏执行此操作?我并不是说使用丑陋或“作弊”的东西,如
#(/ % %) or
#(if (nil? %) 1 1)
我的意思是从字面上忽略参数并返回1.我找不到干净的语法。
答案 0 :(得分:28)
#(do %& 1)
...但(constantly 1)
更好。
答案 1 :(得分:5)
#()语法不能用于按照描述所需的方式创建具有未使用参数的函数。这是#()阅读器宏的限制。
我建议不使用#(),而只是写(不断1),这是创建忽略参数的函数的一种非常简短的方法,而是始终返回1.
答案 2 :(得分:0)
#(identity 1)
怎么样?与#(do %& 1)
或(constantly 1)
具有相同的作用。