Я из Java и новичок в Scala.
Я использую Scala и Spark. Но я не могу понять, где я использую ==
и ===
.
Может кто-нибудь сообщить мне, в каком сценарии мне нужно использовать эти два оператора, и в чем разница между ==
и ===
?
Я из Java и новичок в Scala.
Я использую Scala и Spark. Но я не могу понять, где я использую ==
и ===
.
Может кто-нибудь сообщить мне, в каком сценарии мне нужно использовать эти два оператора, и в чем разница между ==
и ===
?
"==
" использует методы equals
, которые проверяют, указывают ли две ссылки на один и тот же объект. Определение "===
" зависит от контекста/объекта. Для Spark "===
" использует метод equalTo
.
См
==
https://spark.apache.org/docs/2.0.0/api/java/org/apache/spark/sql/Column.html#equals(java.lang.Object)===
https://spark.apache.org/docs/2.0.0/api/java/org/apache/spark/sql/Column.html#equalTo(java.lang.Object)(Поскольку вы ссылаетесь на Spark:) Важным отличием Spark является возвращаемое значение. Для столбца:
==
возвращает boolean
===
возвращает столбец (который содержит результат сравнения элементов из двух столбцов)
Вообще говоря, это просто функции.
Для разных типов "==" и "===" могут быть определены или "перегружены" для разных значений.
Например, в некоторой тестовой среде для некоторой специальной функции определен "===". См. .
ScalaTest позволяет использовать синтаксис утверждения Scala, но определяет оператор triple equals (===), чтобы дать вам лучшие сообщения об ошибках. Следующий код даст вам ошибку, указывающую только на то, что утверждение не выполнено:
assert (1 == 2) Вместо этого, используя triple equals, вы получите более информативное сообщение об ошибке: "1 не равно 2":
assert (1 === 2)
ознакомьтесь с этой страницей для получения более подробной информации; Что такое оператор === (тройной эквивалент) в Scala Koans?