Aujourd'hui, je voulais apprendre sur les Superypes de la liste code>:: wow, donc list code> a déjà cinq superypes immédiats. Choisons un au hasard: P>
trait SeqLike[+A, +Repr] extends Any
with IterableLike[A, Repr]
with GenSeqLike[A, Repr]
with Parallelizable[A, ParSeq[A]]
3 Réponses :
Une fois que vous avez atteint le et Le lien que l'autre utilisateur fourni (également http: //docs.scala -Lang.org/overviews/collections/overview.html ) est une bonne référence - il vous suffit de savoir que chacun de ces types a un type Mais du point de vue des collections s'étendant, il vous suffit de trouver le type le plus spécifique que vous souhaitez étendre dans la plupart des cas, par exemple Dans les futures versions de SCALA, les traits SEQLILE code>, vous êtes presque là-bas -
iterablelike code> a juste
geniterablelike code> et
trersblelike code> Au-dessus,
TraversableLike Code> n'a que
TraversableOnce CODE> et
GENDVERSABLELITINO CODE> ci-dessus. P>
traverVableOnce code> a
genttraverableAnce code> au-dessus de celui-ci, et c'est tout :) p>
* comme code> correspondant à la représentation. Paramètre de type
REC code>. p>
SEQLILE code> et étendre
SEQ [T] < / Code> et
SEQ [T, YOURCollectionType [T]]] code>. P>
gen * code> peuvent être supprimés, cependant, rendant la hiérarchie plus simple. P>
Il y a un Nice Aperçu de la hiérarchie des classes de collecte sur Scala-lang.org. P>
Ce sont de beaux diagrammes, mais je ne trouve pas abstractréseq code>,
produit code>,
generictraverableemplate code>,
linéarseqoptimized code>,
linéarseqlike < / Code>,
SEQLILE code>,
iterablelike code>,
GenSeqLique code> ou
parallelizable code> là-bas ...
La plupart des parents sont effectivement des détails de mise en œuvre et des astuces d'optimisation. Si vous ne vous souciez pas de cela, vous pouvez ignorer quelque chose avec Si vous souhaitez comprendre comment les traits de mise en œuvre sont utilisés ou concevez vos propres collections, vous devriez lire ce didacticiel: l'architecture des collections Scala . P>
En outre, si vous voulez / besoin de savoir où une méthode donnée est réellement mise en œuvre, cliquez sur la signature de méthode dans l'scaladoc pour développer de la description. Les classes em> les classes de définition em> affichent des liens vers l'emplacement de la mise en œuvre. P> comme code> ou
modèle code> à la fin. Appliquer cela aux listes, nous avons:
Liste <: linéarseq <: SEQ <: itérable <: Traversable code>. Vous devez utiliser ces traits comme des types d'arguments dans votre code (plutôt que les traits de mise en œuvre). Ils sont décrits dans: Scala Collections API P>
J'ai découvert que j'ai appris un peu en expansinant sur la méthode et regardez les classes de définition i>. Par exemple, pour List.Isempty Code> Il montrera SEQLILE → ITERABLELITINE → TRAVERBLITINIQUE → TRAVERSABLEONCE → GENDVERSAIRENCE I>. Je peux ensuite suivre
SEQLILE code> et en savoir plus à ce sujet. Je peux ensuite cliquer sur SEQLILE.SCALA et vérifier le code source ...
Eh bien, vous vous assurez d'abord que vous avez vos rations de fer, votre flambeau et votre pôle de dix pieds, puis vous descendez, percant des choses pour vous assurer qu'ils ne sont pas un piège .... plus sérieusement, la hiérarchie des collections est énorme et la plupart de Cela fait effectivement quelque chose de conceptuellement. Ce n'est pas facile. Au moins la plupart des types expliquent maintenant au sommet de leurs documents à ce qu'ils sont pour. (Il s'agit d'environ trois ou quatre niveaux avant de bas en bas dans des choses comme
genttraversableonce code>.)
Si vous êtes juste intéressé par les parties de l'utilisateur de l'API de la collection (ou comme préchauffage avant de regarder avant de regarder les internes), un bon démarrage est ce groupe de graphiques d'héritage: décodified.com/scala/collections-api.xml ; Ce n'est pas complètement à jour, mais heureusement, il n'est pas encore obsolète.
@gourlaysama Ce sont de beaux diagrammes, mais je ne trouve pas de trouver
abstractréseq code>,
, code>,
generictraverableemplate code>,
linéarseqoptimized code>,
,
Linéarseqlike an code>,
SEQLILE code>,
iterablelike code>,
GENSEQLIQue code> ou
parallelizable code> là-bas ...
Dupliqué possible de Didacticiel de conception SCALA 2.8 Collections