val filesHere = (new java.io.File(".")).listFiles
val filesHere2 = (new java.io.File(".")).listFiles
scala> filesHere == filesHere2
res0: Boolean = false
这是非常违反直觉的。我更希望 filesHere 和 filesHere2 相等。
这肯定是由于 Java 和 Scala 之间的语义不匹配,例如,关于数组或(文件)相等性。显然,我在这里遗漏了一些东西!
最佳答案
如果我统治世界,我会反对 Scala 的 eq 方法,因为该名称极度容易与等号和 == 混淆。相反,英语确实有一个词表示身份而不是平等:我会简单地称它为 is 。
同样,我会用 isnt 替换 Scala 的 ne(这是一个糟糕的名字,因为它既是缩写又难以理解)。
在我看来,这些实际上可以添加到 AnyRef 并且旧方法已弃用,即使在这个后期阶段也是如此。
关于java - Scala、Java 和平等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3422669/