请在2024 Clojure状态调查!分享您的想法。

欢迎!请查看关于页面以了解此处的更多信息。

+1
Spec

使用Spec 1,看起来计数验证失败可以报告得更好——不清楚实际计数是多少

user=> (s/assert (s/coll-of any? :count 1)
            [])
Execution error - invalid arguments to user/eval148 at (REPL:1).
[] - failed: (= 1 (count %))

1 个答案

0

:count使用bounded-count它能够与无限集合非常好地工作。报告实际计数需要使用count,在无限集合上它会挂起。

公正的观察!然而,可以检测这种情况是否容易处理,例如,集合是否为向量?

当然,这不是一个通用的解决方案,但可以满足大多数实际使用案例。
by
以下是一些值得注意的事情
- 除`:count`之外,还有一些其他限定条件
- 上面的“执行错误”实际上打印了值本身,因此可以轻易地看到计数
- 这样会导致无限集合挂起,哦不
- 意外地,`explain-data`也会在无限集合上挂起 - 我认为这是一个错误
by
谢谢,我感谢这些观察。我在"..."实际上打印了值本身,因此可以轻易地看到计数"这一点上不同意。

对于人类来说,在一个向量中计数42或1024个项目并不容易 :) spec说明应该是为了使我们的生活变得更简单。
...