相关疑难解决方法(0)

我怎样才能得到Clojure:pre&:post来报告他们失败的价值?

(defn string-to-string [s1] 
  {:pre  [(string? s1)]
   :post [(string? %)]}
  s1)
Run Code Online (Sandbox Code Playgroud)

我喜欢:pre和:post条件,它们允许我弄清楚我何时更快地将"方形钉子放在圆孔中".也许这是错误的,但我喜欢将它们用作一种可怜的勒芒式检查器.这不是哲学,这是一个简单的问题.

在上面的代码中我似乎很容易确定这s1:pre条件中的函数参数.类似地,%:post条件总是函数返回值.

我想是打印的值s1或者%当任的这些相应的条件Asse田内失效.所以我得到了类似的东西

(string-to-string 23)

AssertionError Assert failed: (string? s1) 
(pr-str s1) => 23 
Run Code Online (Sandbox Code Playgroud)

AssertionError包含每个变量的单行,该变量被识别为来自函数参数列表并且在失败测试中被引用.当函数的返回值未通过:post条件时,我也想要类似的东西.

这将使得在尝试从AssertionError进行诊断时快速发现我滥用函数的方式变得微不足道.它至少会让我知道值是否nil是实际值(这是我犯的最常见的错误).

我有一些想法,这可能与宏来完成,但我想知道如果有办法基本上只是重新定义了任何安全和全球性的方式(defn(fn朋友们这样做是:pre:post也将打印导致测试值(S)失败.

clojure clojurescript

26
推荐指数
2
解决办法
4301
查看次数

标签 统计

clojure ×1

clojurescript ×1