我有這個(not (some #(= (:length %1) 0) %))
作爲後置條件。這樣寫的,很明顯,但是當這個條件不能滿足我得到這個:我可否在前置和後置條件中包含消息
Assert failed: (not (some (fn* [p1__17852#] (= (:length p1__17852#) 0)) %))
這是不是很可讀。有沒有辦法爲後置條件或前提條件定義消息?
編輯1:
繼noahlz和noisesmiths建議,(但使用外部命名功能):
(defn not-zero-length
[evseq]
(not (some (fn [item] (= (:length item) 0)) evseq)))
(defn my-func
[evseq]
{:post [(not-zero-length %)]}
evseq)
(my-func '({:length 3}{:length 0}))
給出:
AssertionError Assert failed: (not-zero-length %)
這是很多更清晰。
該線程是兩年半了,而不是由任何決策權的人評論。我不會說這個功能正在考慮列入。 – amalloy
似乎解決方案是不在斷言中使用更多的描述性函數名稱(不是內聯函數)。 – noahlz
已更新答案,以反映amalloy提到的內容。 –