Clojure列表与矢量

时间:2014-01-03 12:35:04

标签: clojure

在REPL中,当您输入

(= [1 2 3] (list 1 2 3))

您将获得 true 。这是否意味着列表可以与向量相同?

1 个答案:

答案 0 :(得分:4)

不,clojure.lang.PersistentList永远不能identical?clojure.lang.IPersistentVector - 它们是不同的类型,显然不同类型的对象不能是同一个对象。因此它们不能完全相同。

然而,

他们可以是平等的。 Clojure中的=检查相等性,而不是标识,并调用每个equals在Java中具有的Object方法。列表和向量都通过确定列表/向量的内容对另一个集合的内容是equals来实现equal(如果另一个对象不是集合,它将返回false)。