使用#()返回1的匿名函数

时间:2011-02-15 15:15:11

标签: clojure

使用defn或fn很容易创建一个函数,它接受一个忽略它的参数并返回1:

(defn ret1 [arg] 1)
(fn [arg] 1)

是否可以使用#()宏执行此操作?我并不是说使用丑陋或“作弊”的东西,如

#(/ % %)  or 
#(if (nil? %) 1 1)

我的意思是从字面上忽略参数并返回1.我找不到干净的语法。

3 个答案:

答案 0 :(得分:28)

#(do %& 1) ...但(constantly 1)更好。

答案 1 :(得分:5)

#()语法不能用于按照描述所需的方式创建具有未使用参数的函数。这是#()阅读器宏的限制。

我建议使用#(),而只是写(不断1),这是创建忽略参数的函数的一种非常简短的方法,而是始终返回1.

答案 2 :(得分:0)

#(identity 1)怎么样?与#(do %& 1)(constantly 1)具有相同的作用。