J'ai des problèmes pour bien comprendre comment utiliser les manifestes.Scala: Problèmes avec l'effacement sur la fonction d'égalisation prioritaire pour les classes paramétrées
Voilà mon problème: J'ai creat une nouvelle classe paramétrisé C et tryed surchargent equals comme ceci:
override def equals(that:Any)=that match{
case that:C[T] => true /*do smth else not relevant*/
case _ => false
}
Bien sûr, je reçois le « avertissement: type argument non variables T dans le modèle de type C [T] est décochée puisqu'elle est éliminée par effacement ". Je tryied donc en utilisant comme je manifeste utilise dans de nombreuses autres fonctions:
override def equals(that:Any)(implicit manifest:Manifest[T])=that match{
case that:C[T] => true
case _ => false
}
Mais j'ai reçu la « erreur: méthode est égale à rien overrides » message.
Je ne sais pas comment résoudre ce problème. Quelqu'un pourrait-il m'aider s'il vous plaît?
Merci. Je me fous de java, donc ce serait un plaisir de ne pas avoir tous ces problèmes. J'ai l'habitude de travailler avec Lisp et Haskell, donc je ne peux pas comprendre pourquoi Scala est si bavarde. – Bruna
Oui, c'est dommage que les relations d'équivalence ne soient pas connectables en scala.Je ne suis pas d'accord avec Martin; la plupart des gens ne se soucient pas de la performance (ou du moins, ils ne devraient pas) à ce point –