2016-09-14 2 views
5

Я из фона Java и нового в scala.Разница между == и === в scala, искра

Я использую scala и искру. Но не в состоянии понять, где я использую == и ===.

Может ли кто-нибудь сообщить мне, в каком сценарии мне нужно использовать этого двух операторов, а что разница между == и ===.

+3

Возможный дубликат [Скала равенства с проверкой типа?] (Http://stackoverflow.com/questions/9084464/scala-equality-with-type-checking) –

+1

Вы должны предоставить контекст. '===' и '==' - это просто функции, как и любые другие. Они не имеют никакого особого значения. – zero323

+1

@ cricket_007 Я серьезно сомневаюсь, что OP находится в Scalaz/Cats. Я предполагаю, что речь идет о Spark SQL. – zero323

ответ

7

Вообще говоря, это просто функции.

Для разных типов «==» и «===» могут быть определены или «перегружены» для разных значений.

Например, в некоторых тестовых рамках для некоторой специальной функции определен параметр «===». См. this.

10

«==» использует методы equals, которые проверяют, указывают ли две ссылки на один и тот же объект. Определение «===» зависит от контекста/объекта. Для Spark «===» использует метод equalTo. См

(Поскольку вы ссылаетесь искрой :) Важное различием для Спарка является возвращаемым значением. Для Колонка:

  • == возвращает логическое

  • === возвращает столбец (который содержит результат сравнения элементов двух столбцов)

+2

Кроме того, Spark SQL * должен * использовать оператор '===', поскольку оператор '==' не может быть перегружен. – wrschneider

0

ScalaTest позволяет использовать в Scala синтаксис утверждения, но определяет оператор triple equals (===), чтобы дать вам лучшие сообщения об ошибках. Следующий код даст вам сообщение об ошибке, указывающее, что только утверждение не удалось:

утверждают (1 == 2) Использование тройной равных вместо даст вам сообщение об ошибке более информативную, «1 не равное 2»:

assert (1 === 2)

посмотрите эту страницу для получения более подробной информации; What is the === (triple-equals) operator in Scala Koans?

Смежные вопросы