在我的一个测试中,我有以下输出:
Assertion failed:
Expected :[[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] ["seq07"] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []]
Actual :[() () () () () () () () () () () () () () () () () () () () () () () () () () ("seq07") () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () ()]在此输出中,()和("seq07")表示什么?
发布于 2021-07-02 14:32:16
()是列表的符号,而[]是向量的符号
()是一个空列表,而("seq07")是一个包含单个成员的列表,即字符串seq07
您可以阅读有关clojure列表here的更多信息
编辑:刚刚找到了这个关于列表和向量的interesting SO question
发布于 2021-07-02 17:19:48
正如在另一个答案中所指出的,()是一个空列表,[]是一个空向量。
但是请注意,=比较了列表和向量的内容,它忽略了容器的类型:
(= '("seq07") ["seq07"]) ;; => true
(= '(()) [[]]) ;; => true问题中的断言失败是由于actual向量比expected向量具有更少的元素:
(= ['("seq07")] ['("seq07") '()]) ;; => falsehttps://stackoverflow.com/questions/68220522
复制相似问题