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
你也可以在这里找到一些例子:
(在示例中,他们使用的是?方法,但它只是别名===)
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)