7

如何在编程语言 clojure 中编写模数语法?

例如符号money %= money_value。

4

1 回答 1

11

Clojure 中有两个函数您可能想尝试:modrem. 它们对正数的工作方式相同,但对负数的工作方式不同。这是文档中的一个示例:

(mod -10 3) ; => 2
(rem -10 3) ; => -1

更新:

如果您真的想将您的代码转换为 Clojure,您需要意识到惯用的 Clojure 解决方案可能与您的 JavaScript 解决方案完全不同。这是一个很好的解决方案,我认为它大致可以满足您的需求:

(defn change [amount]
  (zipmap [:quarters :dimes :nickels :pennies]
    (reduce (fn [acc x]
              (let [amt (peek acc)]
                (conj (pop acc)
                      (quot amt x)
                      (rem amt x))))
            [amount] [25 10 5])))

(change 142)
; => {:pennies 2, :nickels 1, :dimes 1, :quarters 5}

您可以在ClojureDocs上查找您不认识的任何功能。如果您只是不了解样式,那么您可能需要更多的高阶函数编程经验。我认为4Clojure是一个很好的起点。

于 2012-10-25T02:37:37.183 回答