Phi*_*l H 67 arrays scala pattern-matching
val a: Array[Int] = Array(1,2,4,5)
val b: Array[Int] = Array(1,2,4,5)
a==b // false
Run Code Online (Sandbox Code Playgroud)
是否有模式匹配方式来查看两个数组(或序列)是否相同?
Mor*_*itz 101
您需要将最后一行更改为
a.deep == b.deep
Run Code Online (Sandbox Code Playgroud)
对数组进行深入比较.
sc_*_*ray 92
来自Scala编程:
Array(1,2,4,5).sameElements(Array(1,2,4,5))
Run Code Online (Sandbox Code Playgroud)
The*_*aul 18
a.corresponds(b){_ == _}
Run Code Online (Sandbox Code Playgroud)
Scaladoc:
true如果两个序列具有相同的长度和p(x, y)是true对于所有对应的元件x的this包裹阵列和y的that,否则false
小智 6
为了获得最佳性能,您应该使用:
java.util.Arrays.equals(a, b)
Run Code Online (Sandbox Code Playgroud)
这非常快,不需要额外的对象分配。Array[T]scala中的内容与Object[]java中的相同。对于原始值(例如Intjava)也是如此int。
从 Scala 2.13 开始,deep相等方法不起作用并且会出错:
val a: Array[Int] = Array(1,2,4,5)
val b: Array[Int] = Array(1,2,4,5)
a.deep == b.deep // error: value deep is not a member of Array[Int]
Run Code Online (Sandbox Code Playgroud)
sameElements在 Scala 2.13 中仍然有效:
a sameElements b // true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33538 次 |
| 最近记录: |