2
是否有任何方法来存储在前提条件下执行的计算结果,以便它可以在实际的函数体中使用。局部变量的Clojure前提条件
这是可怕的(昂贵,计算运行两次):
(defn bar [x]
{:pre [(> (costly-computation x) 1337)]}
(costly-computation x))
我想要做的东西沿着这些路线。但这不起作用。
(defn smartbar [x]
(let [res (costly-computation x)]
{:pre [(> res 1337)]}
res))
它看起来更像是一个:后置条件? –
一个职位条件应该工作。此外,如果您的条件不符合,您可以简单地使用'assert'强制执行错误。 – noisesmith
这是一个人为的例子。我需要在执行大量的函数体之前检查条件。邮政条件不是我想要的。 – 4ZM