是否可以编写例如:
(defn- multiple-of-three? [n] (zero? (mod n 3))
(defn- multiple-of-five? [n] (zero? (mod n 5))
into:
multiple-of-three-or-five?
所以我可以用它来过滤:
(defn sum-of-multiples [n]
(->> (range 1 n)
(filter multiple-of-three-or-five?)
(reduce +)))
我也不想这样定义它:
(defn- multiple-of-three-or-five? [n]
(or (multiple-of-three? n)
(multiple-of-five? n)))
例如,使用 Javascript 模块 Ramda 可以实现为:http://ramdajs.com/docs/#either http://ramdajs.com/docs/#either
const multipleOfThreeOrFive = R.either(multipleOfThree, multipleOfFive)
当然,在 Clojure 中这是some-fn https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/some-fn.
(def multiple-of-three-or-five?
(some-fn multiple-of-three? multiple-of-five?))
(multiple-of-three-or-five? 3) ; => true
(multiple-of-three-or-five? 4) ; => false
(multiple-of-three-or-five? 5) ; => true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)