Partial and named arguments in Clojure
我是一个Python程序员,只是在学习Clojure。 在Python中,我喜欢如何在对functools.partial的调用中使用命名参数:
1 2 3 4 5 | def pow(base, exponent): return base ** exponent exp = partial(pow, 2.71828) # exp(2) --> 7.3886 square = partial(pow, exponent=2) # square(2) --> 4 |
对于现有函数,您将需要使用函数文字,因为它们不使用基于关键字的参数,而使用位置参数。
对于您自己的功能,您可以执行类似的操作:
1 2 3 4 5 6 7 | (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) |