val a: Array[Int] = Array(1,2,4,5) val b: Array[Int] = Array(1,2,4,5) a==b // false
Есть ли способ сопоставления с образцом, чтобы увидеть, эквивалентны ли два массива (или последовательности)?
Вам необходимо изменить последнюю строку на
a.deep == b.deep
, чтобы провести глубокое сравнение массивов.
С Программирование Scala :
Array(1,2,4,5).sameElements(Array(1,2,4,5))
a.corresponds(b){_ == _}
Scaladoc: true, если обе последовательности имеют одинаковую длину и p(x, y) равно true для всех соответствующих элементов x из this упакованного массива и y из thatв противном случае false
true
p(x, y)
x
this
y
that
false
Для лучшей производительности вы должны использовать:
java.util.Arrays.equals(a, b)
Это очень быстро и не требует дополнительного выделения объектов. Array[T] в Scala совпадает с Object[] в Java. Та же история для примитивных значений, таких как Int, то есть java int.
Array[T]
Object[]
Int
int