在关于多方法的clojure.org 文档中,它指出:
Clojure multimethods ... can do validation of arguments and route to error-handling methods etc.
但是,我没有看到很多人为此目的使用多方法的例子。在我只需要实现单个方法定义的情况下,使用多方法进行输入验证是否仍然有意义?例如:
(defmulti divide
(fn [a b] (if (zero? b)
(throw (IllegalArgumentException. "Cannot divide by zero"))
:ok)))
(defmethod divide :ok [a b] (quot a b))
这样做的好处是它保持了divide
输入检查或错误处理的最终实现。是否有更惯用的方式来获得验证、错误处理和干净的语法?