欢迎!请参阅 关于 页面以了解有关此功能的更多信息。
这看起来并不是一个很短的捷径,而且它切断了添加消息到断言的有用功能。
如果您更喜欢 assert 及其消息,则似乎永远不会。
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