我在浏览
为什么有几个奇偶校验选项而不是一个呢?这只是为了性能优化,这样在大多数情况下就不会调用concat函数吗?
否则看起来应该像这样,对吗?
我还注意到其他几个函数也遵循同样的模式。
clojure.core
时发现了 partial
函数的实现。它看起来像这样:(defn partial
"Takes a function f and fewer than the normal arguments to f, and
returns a fn that takes a variable number of additional args. When
called, the returned function calls f with args + additional args."
{:added "1.0"
:static true}
([f] f)
([f arg1]
(fn [& args] (apply f arg1 args)))
([f arg1 arg2]
(fn [& args] (apply f arg1 arg2 args)))
([f arg1 arg2 arg3]
(fn [& args] (apply f arg1 arg2 arg3 args)))
([f arg1 arg2 arg3 & more]
(fn [& args] (apply f arg1 arg2 arg3 (concat more args)))))
为什么有几个奇偶校验选项而不是一个呢?这只是为了性能优化,这样在大多数情况下就不会调用concat函数吗?
否则看起来应该像这样,对吗?
(defn partial
([f] f)
([f & more]
(fn [& args] (apply f (concat more args))))
)
我还注意到其他几个函数也遵循同样的模式。