我正在编写一个简单的 DiceRoller 应用程序,并创建了主要函数。然而,我想知道是否有一种“智能”方式在 Clojure 中验证函数输入,而不是使用分支条件来验证输入?我的函数如下所示,附带一个样本测试。我还需要测试 n 是否不是数字,使用另一个 if 或 or 进行测试,这感觉很混乱。
如果有人能指出更聪明的方法来执行此函数,我将非常感激任何反馈。这是我第一次尝试编写函数式程序。
如果有人能指出更聪明的方法来执行此函数,我将非常感激任何反馈。这是我第一次尝试编写函数式程序。
(ns DiceRoller)
(defn roll
"rolls a specified number of n sided dice "
([] (roll 1 6))
([number] (roll number 6))
([number n]
(if-not number? number (throw (IllegalArgumentException. (str "incorrect input, integers only"))))
(take number (repeatedly #(+ (rand-int n) 1)))
)
)