Closed5
scala の Iterable, IterableOnce

scala のIterable, IterableOnce について調べてみたのでメモ書きを残しておく。
一旦、scala 2.13 とします。

Iterable
が IterableOnce
を継承している。

Iterable
はコレクションを扱うベースになる trait で、IterableOps
をミックスインしているので、コレクションに対しての普段よく使うようなメソッドが定義されている。

IterableOnce
は1回あるいは複数回走査できるようなコレクションを表す trait。
これ自体にはあまりコレクション操作出来るメソッドは無くて、IterableOnceOps
に定義されている。mixin していないのは Iterable
との大きな違い。
以下に書いてある通り、最小限のインターフェースを提供することが目的らしい。
普通は以下のコード例にあるように、****Ops
を mixin しておくっぽい。Iterable
はまさにそう。

ちなみに Option
は Iterable
を継承せず、IterableOnce
を継承している点は面白い。
このスクラップは6ヶ月前にクローズされました