圆括号在clojure.test失败的输出中意味着什么



我的一个测试中有以下输出:

Assertion failed:
Expected :[[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] ["seq07"] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []]
Actual   :[() () () () () () () () () () () () () () () () () () () () () () () () () () ("seq07") () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () ()]

()("seq07")在这个输出中是什么意思?

正如另一个答案中所指出的,()是一个空列表,[]是一个向量。

然而,请注意,=比较列表和向量的内容,它忽略了容器的类型:

(= '("seq07") ["seq07"])           ;; => true
(= '(()) [[]])                     ;; => true

问题中的断言失败是由于actual矢量比expected矢量具有更少的元素:

(= ['("seq07")] ['("seq07") '()])  ;; => false

()是列表的表示法,而[]是向量的表示法

()是一个空列表,("seq07")是一个包含单个成员的列表——字符串seq07

你可以在这里阅读更多关于clojure列表的信息

编辑:刚刚发现这个有趣的SO问题关于列表vs向量

相关内容

  • 没有找到相关文章

最新更新