我是一名Python程序员,只是在学习Clojure。在Python中,我喜欢在functools.partial调用中如何使用命名参数:
def pow(base, exponent):
return base ** exponent
exp = partial(pow, 2.71828) # exp(2) --> 7.3886
square = partial(pow, exponent=2) # square(2) --> 4
exp
的实现在Clojure中显然是等效的 - 但是我也可以使用partial
来简洁地定义square
吗?有没有办法将关键字/命名参数传递给partial,以便预先确定特定的参数?或者这不是由partial
处理,而是由函数文字处理,例如#(pow % 2)
?
答案 0 :(得分:1)
对于现有函数,您需要使用函数文字,因为它们不使用基于关键字的参数并使用位置参数。
对于你自己的功能,你可以做类似的事情:
(defn my-pow [& {:keys [base exponent]}]
(Math/pow base exponent))
(def exp (partial my-pow :base 2.71828))
(exp :exponent 2)
(def square (partial my-pow :exponent 2))
(square :base 2)