我正在使用Reagent编写一些代码,其中一部分涉及编写一些回调和状态操作。
其中一些地方将使用默认参数调用函数,我不想对它们执行任何操作。我只想返回一个常量值。
例如,当我使用#(true)
之类的东西时,我会得到一个例外,我必须写(fn [_] true)
。有没有办法让lambda速记知道它获取参数而不使用它?
答案 0 :(得分:1)
#(do % true)
但老实说,我只是在没有宏的情况下编写完整版本。它使意图更加清晰。
令人遗憾的是,Clojure似乎没有Haskell const
函数的版本。它接受一个值并返回一个抛出其参数并返回值的函数。这种情况非常方便。然而,为您的库编写自己的版本是微不足道的:
(defn const [value]
(fn [_] value))
(some-hof (const true))
有了一些创造力,让const
支持任意数量的论证可能并不困难。
编辑:
@amalloy指出Clojure确实有这样的功能!core/constantly
。