scala> List(1,2,3) == List(1,2,3)
res2: Boolean = true
scala> Map(1 -> "Olle") == Map(1 -> "Olle")
res3: Boolean = true
Но при попытке сделать то же с Массивом, это не работает то же. Почему?
scala> Array('a','b') == Array('a','b')
res4: Boolean = false
Я использовал 2.8.0. RC7 и 2.8.0. Beta1-предварительный-выпуск.
Поскольку определение "равно" для массивов заключается в том, что они ссылаются на один и тот же массив.
Это согласуется с равенством массивов Java, использующим Object.Equals
, поэтому он сравнивает ссылки.
Если вы хотите проверить попарные элементы, используйте sameElements
Array('a','b').sameElements(Array('a','b'))
или deepEquals
, которые были устарели в 2.8, поэтому вместо этого используйте:
Array('a','b').deep.equals(Array('a','b').deep)
Есть хорошее обсуждение Nabble о равенстве массивов.