提问者:小点点

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


我开始研究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中?


共1个答案

匿名用户

这是ScalaTest中的三重等于运算符。看看这个页面:FunSuite入门。上面写着:

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

assert(1 == 2)

相反,使用三重等于会给你信息量更大的错误消息,“1 不等于 2”:

assert(1 === 2)