我在讀「斯卡拉編程」一書,它提到==
是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