UByteArray оператор равенства - PullRequest
0 голосов
/ 03 июля 2019

В коде Kotlin у меня есть два UByteArray объекта, и я хочу знать, имеют ли они одинаковый материал:

val a : UByteArray = get()
val b : UByteArray = get()

if (a == b) println("The same stuff")

Достаточен ли оператор равенства или мне нужно сравнитьдва байта за байтом?

1 Ответ

1 голос
/ 04 июля 2019

UByteArray и другие массивы беззнаковых типов имеют свою операцию равенства, определенную так, чтобы она соответствовала равенству массивов подписанных типов, поэтому два UByteArrays равны только тогда, когда они ссылаются на один и тот же экземпляр.

Структурное равенство двух UByteArrays можно найти с помощью функции расширения contentEquals, такой же, как для подписанных массивов:

val ubyteArray1 = ubyteArrayOf(1u, 2u, 3u)
val ubyteArray2 = ubyteArrayOf(1u, 2u, 3u)
println(ubyteArray1 contentEquals ubyteArray2)
...