欢迎!请查看关于页面以获得更多关于如何使用本站的信息。
这看起来并不是一个多么便捷的快捷方式,同时也使我无法使用向断言添加消息等有用的功能。
如果你更喜欢assert及其消息,那么这似乎永远都不会发生。
迈克尔·福格斯(《Clojure的乐趣》一书的作者)
:pre和:post相比assert的优点之一是,它们允许“断言”可能来自不同于函数体的来源。[...] :pre和:post还使进行一些复杂的自动测试生成变得相对容易,并且作为额外的好处,为函数提供了一种形式的文档。克里斯·豪斯还提出了一个我之前不知道的有趣观点:“如果你不得不这样做,用assert代替:pre通常很简单。用assert代替:post很痛苦。”听起来很合理。在此基础上,查斯·艾默里克的评估认为:pre和:post涵盖了99.5%的assert用法,并且提供了简单、一致的钩子。
来源:fogus: Clojure的:pre和:post,评论编号14。
您还应考虑函数规格: https://clojure.org/guides/spec#_specing_functions