我在读“斯卡拉编程”一书,它提到==
是final
在Any
,意思是子类不能覆盖它,所以当我看到这个例子List(1,2) == List(1,2)
,我去找到API doc, t找到方法==
,Scala如何在List
实际上定义该方法?为什么它不在API文档中?Scala List API中的“==”方法在哪里?
如果它不被List
类覆盖,那么如何根据List
项而不是对象引用进行比较?
我在读“斯卡拉编程”一书,它提到==
是final
在Any
,意思是子类不能覆盖它,所以当我看到这个例子List(1,2) == List(1,2)
,我去找到API doc, t找到方法==
,Scala如何在List
实际上定义该方法?为什么它不在API文档中?Scala List API中的“==”方法在哪里?
如果它不被List
类覆盖,那么如何根据List
项而不是对象引用进行比较?
==
是类Any
中的最终方法,它叫.equals
。
问:Scala如何在List中实际定义该方法? A:在Scala执行环境中的每个类都直接继承或从
Any
类间接地继承或 。
斯卡拉的引用相等是eq
。
==是最终在类的任何,并Any
在阶类层次结构的根。 scala中的每个班级都会默认从Any
延伸。所以当拨打斯卡拉==
,它会打电话任何==
方法首先。并为Any
==
defnition:
如果(X EQ空),其情商空别的x.equals(即)
参见:Any Class
看起来像我已经问了一个愚蠢的问题。我认为'val a = List(1,2)'和'val b = List(1,2)'具有相同的对象引用,因为它们像字符串一样是不可变的。 – GMsoF