8
votes

Conversion de type implicite scala et ==

Quelqu'un peut-il vous éclairer de savoir pourquoi la conversion de type implicite ne fonctionne pas avec == code>?

Exemple: P>

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  


0 commentaires

3 Réponses :


6
votes

Pour remplacer l'opérateur == , vous devez réellement remplacer la méthode égale : xxx

Vous ne pouvez pas faire une instance de votre bitarray égal à un long et obéissez toujours au contrat égal (c.-à-d. Ce ne sera pas symétrique).


1 commentaires

Peux-tu élaborer? Ou signalez-moi dans la direction d'une documentation de votre fonctionnement? Merci



15
votes

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


2 commentaires

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".



0
votes

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) . .


0 commentaires