Scala与类型检查相等?

Mat*_*ska 17 scala equality operators

是否有统一的方法来执行类型检查的相等性?不幸

val objectA:String = "test"
val objectB:Int = 2
objectA == objectB
Run Code Online (Sandbox Code Playgroud)

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

ten*_*shi 14

您需要查看scalaz===表示类型安全的等号 - 它在那里实现为类型类.

您还可以观看Heiko Seeberger的演讲,他在演讲中描述了它的实现方式:

http://days2011.scala-lang.org/node/138/275

你也可以在这里找到一些例子:

http://scalaz.github.com/scalaz/scalaz-2.9.1-6.0.4/doc.sxr/scalaz/example/ExampleEqual.scala.html#24187

(在示例中,他们使用的是?方法,但它只是别名===)


mis*_*tor 8

Scalaz提供这样的运营商.

scala> import scalaz._, Scalaz._
import scalaz._
import Scalaz._

scala> 4 === "Scala"
<console>:14: error: type mismatch;
 found   : java.lang.String("Scala")
 required: Int
              4 === "Scala"
                    ^

scala> 4 === 4
res7: Boolean = true

scala> 4 === 5
res8: Boolean = false
Run Code Online (Sandbox Code Playgroud)