是否有内置方法只将第n个参数传递给另一个函数。考虑一下:
(defn nth-arg [i & args]
(nth args i))
为方便起见:
(def arg1 (partial nth-arg 0))
(def arg2 (partial nth-arg 1))
(def arg3 (partial nth-arg 2))
这样可以避免像(fn [_ _ x](foo x))这样的构造:
(comp foo arg3)
答案 0 :(得分:1)
没有。仅接受将在函数中使用的参数是一种很好的方式。如果您认为接受更多内容很方便,请考虑转换输入。区分功能应用程序和数据选择是一件好事。
有时您被迫创建不使用第一个参数的函数,例如在定义协议时,通常您不需要this
参数,因此您只需丢弃它。在这里,最好是明确和直接地了解正在发生的事情。你不会通过委托给另一个函数来使代码变得更优雅,这只是读者的另一个心理步骤。
当它对你没有好处时,应避免苛刻的行为。你正在牺牲一个真正的好处(arity检查)。它打开你很难解释错误(opps我应该应用该向量而不是传递它!当我重构不需要第二个参数时,我有4个参数而不是3个。)