在REPL中,当您输入
时(= [1 2 3] (list 1 2 3))
您将获得 true 。这是否意味着列表可以与向量相同?
答案 0 :(得分:4)
不,clojure.lang.PersistentList
永远不能identical?
到clojure.lang.IPersistentVector
- 它们是不同的类型,显然不同类型的对象不能是同一个对象。因此它们不能完全相同。
他们可以是平等的。 Clojure中的=
检查相等性,而不是标识,并调用每个equals
在Java中具有的Object
方法。列表和向量都通过确定列表/向量的内容对另一个集合的内容是equals
来实现equal
(如果另一个对象不是集合,它将返回false
)。