Je viens de Java et je viens de découvrir Scala.
J'utilise Scala et Spark. Mais je ne suis pas capable de comprendre où j'utilise ==
et ===
.
Quelqu'un pourrait-il me faire savoir dans quel scénario je dois utiliser ces deux opérateurs et quelle est la différence entre ==
et ===
?
Le "==
" utilise les méthodes equals
qui vérifient si les deux références pointent sur le même objet. La définition de "===
" dépend du contexte/de l'objet. Pour Spark, "===
" utilise la méthode equalTo
. Voir
==
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)(Puisque vous faites référence à Spark :) Une différence importante pour Spark est la valeur de retour. Pour la colonne:
==
renvoie un booléen
===
renvoie une colonne (qui contient le résultat des comparaisons des éléments de deux colonnes)
De manière générale, ce ne sont que des fonctions.
Pour différents types, "==" et "===" peuvent être définis ou "surchargés" pour différentes significations.
Par exemple, dans certains cadres de test, "===" est défini pour une fonction spéciale. Voir this .
ScalaTest vous permet d'utiliser la syntaxe d'assertion de Scala, mais définit un opérateur triple égal (===) pour vous fournir de meilleurs messages d'erreur. Le code suivant vous donnerait une erreur indiquant seulement qu'une assertion a échoué:
assert (1 == 2) Utiliser triple égal à vous donnerait le message d'erreur plus informatif, "1 n'est pas égal à 2":
assert (1 === 2)
jetez un oeil à cette page pour plus de détails; Qu'est-ce que l'opérateur === (triple-égal à) de Scala Koans?