I have looked at this question but still don't understand the difference between Iterable and Traversable traits. Can someone explain ?
To put it simply, iterators keep state, traversables don't.
Traversable has one abstract method:
foreach. When you call
foreach, the collection will feed the passed function all the elements it keeps, one after the other.
On the other hand, an
Iterable has as abstract method
iterator, which returns an
Iterator. You can call
next on an
Iterator to get the next element at the time of your choosing. Until you do, it has to keep track of where it was in the collection, and what's next.