欢迎!请参阅关于页面以获取更多关于该功能的信息。
这似乎并没有节省太多时间,而且它将我排除在使用消息添加到断言之类的有用功能之外。
如果你更喜欢 assert 及其消息,那么似乎 never。
Michael Fogus(《Clojure快乐之道》的作者)
:pre 和 :post 相对于 assert 的一个优点是,前者允许“断言”可能来自不同于函数体之外的不同来源。[...] :pre 和 :post 还使做一些复杂的自动测试生成变得相对容易,并且作为额外的奖励为函数提供了一种文档形式。Chris Houser 添加了一个我之前没有意识到的有趣观点,“如果必须这样做,使用 assert 而不是 :pre 通常很简单。使用 assert 而不是 :post 则很痛苦。”听起来很有道理。在这个问题上,Chas Emerick 对 :pre 和 :post 覆盖了 99.5% 的 assert 使用情况,并提供了简单而一致的钩子。
来源:fogus: Clojure的 :pre 和 :post,评论编号 14。
您还应该考虑函数规范:https://clojure.org/guides/spec#_specing_functions