oll*_*erg 10 arrays scala equality equals
scala> List(1,2,3) == List(1,2,3)
res2: Boolean = true
scala> Map(1 -> "Olle") == Map(1 -> "Olle")
res3: Boolean = true
Run Code Online (Sandbox Code Playgroud)
但是当尝试对Array执行相同操作时,它的工作方式不同.为什么?
scala> Array('a','b') == Array('a','b')
res4: Boolean = false
Run Code Online (Sandbox Code Playgroud)
我使用过2.8.0.RC7和2.8.0.Beta1-prerelease.
Ste*_*hen 19
因为Arrays的"等于"的定义是它们引用相同的数组.
这与使用Java的数组相等一致Object.Equals,因此它比较了引用.
如果要检查成对元素,请使用 sameElements
Array('a','b').sameElements(Array('a','b'))
Run Code Online (Sandbox Code Playgroud)
或者deepEquals,已经在2.8中弃用,所以改为使用:
Array('a','b').deep.equals(Array('a','b').deep)
Run Code Online (Sandbox Code Playgroud)
有关数组相等性的 Nabble讨论很好.
| 归档时间: |
|
| 查看次数: |
1319 次 |
| 最近记录: |