【发布时间】:2016-02-19 21:00:49
【问题描述】:
在clojure.org documentation on multimethods 中声明:
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 的最终实现保持输入检查或错误处理的干净。有没有更惯用的方法来获得验证、错误处理和干净的语法?
【问题讨论】:
标签: clojure multimethod