J'ai une classe que je voudrais utiliser dans une scala.collection.mutable.PriorityQueue, mais je ne veux pas la faire classer [A] juste pour ce seul but. Je ne considère pas la commande que je veux utiliser en ce qui concerne PriorityQueue comme l'ordre naturel de la classe. Donc, dans ma PriorityQueue, je voudrais que les valeurs soient ordonnées par 'séquence'. Cependant, le fait que deux objets aient la même séquence ne les rend pas naturellement égaux puisque le contenu de leurs «valeurs» peut être différent.Scala: Existe-t-il un moyen d'utiliser PriorityQueue comme je le ferais en Java?
C'est ici qu'en Java, il est intéressant de pouvoir fournir un autre objet Comparator à la PriorityQueue. Mon comparateur ordonne simplement les objets par rapport à leur «séquence» et ignore leurs «valeurs».
La classe PriorityQueue doit être paramétrées avec un « A <% Ordonné [A] »
class PriorityQueue[A <% Ordered[A]] extends ...
D'après ce que j'ai lu, cela signifie ma classe doit se prolonger Ordonné [A] ou je dois fournir une Conversion "implicite def" en Ordered [A], qui, honnêtement, se sent inélégant. La solution Java semble plus «fonctionnelle», ce qui me permet de passer un objet semblable à une fonction de Comparateur au lieu de me forcer dans une hiérarchie de classe ou de monotyper ma classe. Je me rends compte qu'il existe des alternatives à l'utilisation de PrioirityQueue, mais je pense que je suis peut-être heurter contre la courbe d'apprentissage Scala ici et je ne veux pas abandonner sans explorer complètement cette décision de conception.
Est-ce juste une décision malheureuse dans la bibliothèque Scala ou est-ce que je ne comprends pas une sorte de convention d'appel qui rend PriorityQueue plus utilisable et «fonctionnel»?
Merci