java - Scala、Java 和平等

标签 java file scala reference equality

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/

相关文章:

java - Lucene OR 搜索使用 boolean 查询

java - GWT DataGrid 中可扩展行的简单示例

ios - 我可以使用dispatch_io检测给定目录中的文件创建吗?

scala - 将匹配案例应用于 Spark 列?

scala - 带有 Play 框架的 ImplicitParam 中的 Swagger 数据类型模型

java - 高级和低级 Java API 之间有什么区别?

java - 从 Android 上的 Google Drive 下载 Google Sheets 电子表格

java - 为什么当我将元素从一维数组传输到二维数组时,在获取上一个循环生成的最后一个一维数组时

java - 分析从 Java 文件中读取的文本

scala - Scala 中如何接受多种类型