Scala Koans中的===(三重等于)运算符是什么?

poh*_*ohl 52 scala scalatest scala-2.9

我开始研究Scala Koans,它是围绕一系列单元测试组织的,需要填充空白.(这个想法是在类似的Ruby Koans项目之后建模的.)你启动了运行测试的sbt工具,并告诫:

[info]   + ***************************************** 
[info]   +  
[info]   +  
[info]   +  
[info]   + Please meditate on koan "None equals None" of suite "AboutEmptyValues" 
[info]   +  
[info]   +  
[info]   +  
[info]   + ***************************************** 

...所以你去看看这个单元测试它说:

test("None equals None") {
  assert(None === __)
}

......并且,在冥想之后,你意识到你应该填写这样的空白:

test("None equals None") {
  assert(None === None)
}

......然后它继续进行下一次单元测试.

不过,我的问题是这个===运算符是什么?我似乎无法在任何地方找到它.这是Scala Koans项目本身定义的DSL运营商吗?或者它是ScalaTest框架的一部分?或者在Scala中?

rol*_*lve 85

这是ScalaTest的三重等于运算符.看看这个页面:FunSuite入门.它说:

ScalaTest允许您使用Scala的断言语法,但定义了一个三等号运算符(===),以便为您提供更好的错误消息.以下代码将给出一个错误,指示断言失败:

assert(1 == 2)
Run Code Online (Sandbox Code Playgroud)

使用三等于将提供更多信息性错误消息,"1不等于2":

assert(1 === 2)
Run Code Online (Sandbox Code Playgroud)