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中的相同。对于原始值(例如Int
java)也是如此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 次 |
最近记录: |