带有类型检查的Scala相等性?

标签 scala operators equality

是否有一种统一的方法来执行类型检查的相等性?
很遗憾

val objectA:String = "test"
val objectB:Int = 2
objectA == objectB

如果 objectB 是 Int 而 objectA 是 String,则相等运算符 == 不会提示。
我需要一个像 === 这样的运算符来执行类型检查(我希望它对所有 scala obj 都是统一的)。这样的运营商存在吗?

最佳答案

scala dotty(aka scala 3) 有一个特性叫做 Multiversal Equality这允许类型安全相等。
下面是 dotty REPL 示例;

scala> val data1 = "string" 
val data1: String = "string"

scala> val data2 = Array(1, 2, 3, 4) 
val data2: Array[Int] = [I@86733

scala> val comparisonBool = data1 == data2 
1 |val comparisonBool = data1 == data2
  |                     ^^^^^^^^^^^^^^
  |    Values of types String and Array[Int] cannot be compared with == or !=
Dotty 是下一代 Scala 编译器 - http://dotty.epfl.ch/#getting-started
Note:

When will scala 3 come out?

The intent is to publish the final Scala 3.0 soon after Scala 2.14. At the current release schedule (which might still change), that means early 2020.

关于带有类型检查的Scala相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9084464/

相关文章:

scala - 如何组合两个 Future[JsArray]?

dart - 您如何在Dart中读取〜/运算符的名称

JavaScript 相等运算符给出错误结果?

go - 如何优雅地检查三个值的相等性?

scala - 如何使用 fold 做 bool 测试

scala - 如何将“丰富我的图书馆”模式应用于Scala集合?

scala - 如何使用 sttp 将响应读取为 Observable[String]

c - C 运算符/\和\/做了什么?

javascript - 了解递增

scheme - 有人可以向我解释计划/ Racket 中的平等吗?