Collections
2.8のコレクション説明
http://lampwww.epfl.ch/~odersky/whatsnew/collections-api/collections.html
これ読むと見通しがよくなりそうだ。
継承関係
Traversable +Iterable +Seq +Set +Map
trait Traversable
すべてのコレクション型のベースになる。
trait Traversableをmixinするクラスは、
def foreach[U](f: Elem => U): Unit
を実装しないといけない。
すべてのコレクションはもうひとつ下の階層のIterableを継承するので、
これを直接継承しているものは無い?
trait Iterable
実質的に、これがすべてのコレクション型のベースになる。
trait Iterableをmixinするクラスは
def iterator: Iterator[A]
を実装しないといけない。
iteratorメソッドを使ってTraversable::foreachはこんな風になる。
def foreach[U](f: Elem => U): Unit = { val it = iterator while (it.hasNext) f(it.next()) }
Rubyで言うところのEnumerableに相当する。