Scala 结果动词等于动词之前不考虑字符串

Scala 结果动词等于动词之前不考虑字符串,scala,scalatest,Scala,Scalatest,在下面的代码中,比较两个逻辑上相等的ResultToStringPassedTowB实例,应该打印 两者都是平等的 但它会打印出来 两者都不同 由于ResultOfStringPassedToVerb类不会覆盖用于比较的equals方法,因此equals或=(在Scala中,=等于equals方法正在比较m1和m2的参考地址,由于它们是两个对象,引用地址不应相同,因此等于方法返回false 您可以从Java的equals方法中找到更多详细信息: 由于resultofstringpassedtof

在下面的代码中,比较两个逻辑上相等的ResultToStringPassedTowB实例,应该打印

两者都是平等的

但它会打印出来

两者都不同


由于
ResultOfStringPassedToVerb
类不会覆盖用于比较的
equals
方法,因此
equals
=
(在Scala中,
=
等于
equals
方法正在比较
m1
m2
参考地址,由于它们是两个对象,引用地址不应相同,因此
等于
方法返回
false

您可以从Java
equals
方法中找到更多详细信息:


由于
resultofstringpassedtoff
类不会覆盖
equals
方法进行比较,因此
equals
=
(在Scala中,
=
等于
equals
方法)方法是比较
m1
m2
引用地址,因为它们是两个对象,引用地址不应该相同,所以
等于
方法返回
false

您可以从Java
equals
方法中找到更多详细信息:

package msgs

import org.scalatest.FlatSpecLike
import org.scalatest.Matchers._
import org.scalatest.words.ResultOfStringPassedToVerb

/**
  * Created by mogli on 9/1/17.
  */
object FlatSpecMsgs extends FlatSpecLike {

  def main(args: Array[String]): Unit = {
    val m1: ResultOfStringPassedToVerb = "a" should "b"
    val m2 = "a" should "b"

//    println(m1)
//    println(m2)

    if (m1.equals(m2)) {
      println("both are equal")
    } else {
      println("both are different")
    }
  }
}