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