0

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

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

此输出中的含义()和含义是什么?("seq07")

4

2 回答 2

3

如另一个答案中所述,()是一个空列表并且[]是一个空向量。

但是请注意,=比较列表和向量的内容时,它会忽略容器的类型:

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

问题中的断言失败是由于actual向量的元素少于expected向量:

(= ['("seq07")] ['("seq07") '()])  ;; => false
于 2021-07-02T09:19:47.600 回答
1

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

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

您可以在此处阅读有关 clojure 列表的更多信息

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

于 2021-07-02T06:32:16.207 回答