Quelqu'un peut-il vous éclairer de savoir pourquoi la conversion de type implicite ne fonctionne pas avec Exemple: P> == code>?
scala> 5 == BitArray(5)
<console>:11: warning: comparing values of types Int and BitArray using `==' will
always yield false
5 == BitArray(5)
^
res17: Boolean = false
3 Réponses :
Pour remplacer l'opérateur Vous ne pouvez pas faire une instance de votre == code>, vous devez réellement remplacer la méthode
égale code>:
bitarray code> égal à un
long code> et obéissez toujours au contrat égal (c.-à-d. Ce ne sera pas symétrique). P> P>
Peux-tu élaborer? Ou signalez-moi dans la direction d'une documentation de votre fonctionnement? Merci
Vous manquez un aspect fondamental de Scala, ce qui permet de fonctionner à l'égalité.
Fondamentalement, toutes les classes s'étendant anyref code> implémentent la méthode suivante: p>
def == (arg0: Any) : Boolean
Pas tant un aspect fondamental de Scala, mais un aspect de la manière dont la bibliothèque standard est fondamentalement brisée.
@Apocalisp je voulais dire fondamental comme dans "Vous devez savoir ceci si vous voulez utiliser Scala".
Ajout aux autres réponses, rappelez-vous que la fonction Equals doit être symétrique, c'est-à-dire (un équivalent B) == (B est égal à A) p>. P>.