Что такое оператор === (тройной эквивалент) в 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] + *****************************************
... и поэтому вы смотрите на этот unit test, и он говорит:
test("None equals None") {
assert(None === __)
}
... и после медитации вы понимаете, что вы должны заполнить пробел следующим образом:
test("None equals None") {
assert(None === None)
}
... и затем он переходит к следующему unit test.
Мой вопрос, однако, в том, что это за оператор ===
? Кажется, я ничего не могу найти. Является ли это оператором DSL, определенным в проекте Scala Koans? Или это часть рамок ScalaTest? Или в Scala правильно?
Ответы
Ответ 1
Это оператор с тремя значениями из ScalaTest. Посмотрите на эту страницу: Начало работы с FunSuite. В нем говорится:
ScalaTest позволяет использовать синтаксис утверждения Scala, но определяет тройку equals operator (===), чтобы дать вам лучшие сообщения об ошибках. Следующие код даст вам ошибку, указывающую только на то, что утверждение не выполнено:
assert(1 == 2)
Использование тройных равных вместо этого даст вам более информативную ошибку сообщение "1 не равно 2":
assert(1 === 2)