105 votes

Scala: Quelle est la différence entre Traversable et Itératif traits Scala collections?

J'ai regardé cette question , mais ne comprends toujours pas la différence entre Itérable et Traversable traits. Quelqu'un peut m'expliquer ?

229voto

Duncan McGregor Points 5478

Il pense que la différence entre le soufflage et la succion.

Lorsque vous avez un appel en un Traversables foreach, ou de ses dérivés méthodes, il va souffler ses valeurs dans votre fonction d'un seul à la fois - de sorte qu'il a le contrôle sur l'itération.

Avec l' Iterator renvoyée par un Iterable si, vous sucer les valeurs en dehors de ça, le contrôle de quand passer à la suivante en vous-même.

127voto

Daniel C. Sobral Points 159554

Pour le dire simplement, les itérateurs pour conserver l'état, traversables ne le font pas.

Un Traversable a une méthode abstraite: foreach. Lorsque vous appelez foreach, la collection va nourrir le passé de la fonction de tous les éléments qu'il garde, l'un après l'autre.

D'autre part, une Iterable a comme méthode abstraite iterator, qui retourne un Iterator. Vous pouvez appeler next sur Iterator pour obtenir l'élément suivant au moment de votre choix. Jusqu'à ce que vous faites, c'est de garder une trace de l'endroit où il a été dans la collection, et quelle est la prochaine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X