Scala中的a var和val定义之间有什么区别?为什么语言需要两者?你为什么选择a val而不是var反之?
据我所知,Scala ==定义了两个对象的自然相等.
我期望Array(0,1,2) == Array(0,1,2)比较自然平等.例如,与另一个数组的相应元素进行比较时,检查数组的所有元素是否返回true.
人们告诉我,Scala Array只是一个[]只比较身份的Java .改写覆盖比较自然平等Array的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.