Iterable トレイト トップ コレクション API の概要 Traversable トレイト 目次
最新版は Scala Documentation に移行しました。

Traversable トレイト

探索可能(Traversable)トレイトはコレクション階層の最上位に位置する。 [訳注: 木構造などでノードを一つづつ探索することを traverse と言う。また、-able で終わるトレイトは名詞としても使われるため、探索可能なものと考えることもできる。]
Traversable の抽象的な演算は foreach のみだ:

def foreach[U](f: Elem => U )

Traverable を実装するコレクションクラスは、このメソッドを定義するだけでいい。逆に言うと、その他全てのメソッドは Traversable から継承することができる。

foreach メソッドは、コレクション中の全ての要素を探索して、渡された演算 f を各々の要素に適用することを意図している。この演算の型は Elem => U であり、Elem はコレクションの要素の型で、U は任意の戻り値型だ。f の呼び出しはそれに伴う副作用のためだけに行われ、f の戻り値の全ては foreach によって破棄される。

Traversable が定義する全ての具象メソッド (concrete method) を次の表 に列挙した。 これらのメソッドは次のカテゴリに分類される:

Traversable トレイトの演算  
使用例 振る舞い
抽象メソッド:
xs foreach f xs内の全ての要素に対して関数 f を実行する。
加算:
xs ++ ys xsys の両方の要素から成るコレクション。ys TraversableOnce なコレクション、つまり Traversable または Iterator だ。
map 演算:
xs map f xs内の全ての要素に関数 f を適用することによって得られるコレクション。
xs flatMap f xs内の全ての要素に対してコレクション値を返す関数 f を適用し、その結果を連結したコレクション。
xs collect f xs内の全ての要素に対して部分関数 f が定義されている場合のみ適応し、その結果を集めたコレクション。
変換演算:
xs.toArray コレクションを配列に変換する。
xs.toList コレクションをリストに変換する。
xs.toIterable コレクションを Iterable に変換する。
xs.toSeq コレクションを列に変換する。
xs.toIndexedSeq コレクションを添字付き列に変換する。
xs.toStream コレクションを遅延評価されたストリームに変換する。
xs.toSet コレクションを集合に変換する。
xs.toMap キー/値のペアを持つコレクションをマップに変換する。コレクションが要素としてのペアを持たない場合、この演算を呼び出すと静的型エラーがおこる。
コピー演算:
xs copyToBuffer buf コレクション内の全ての要素をバッファ buf にコピーする。
xs copyToArray(arr, s, n) 最大 n 個のコレクションの要素を配列 arr の添字 s より始まる位置にコピーする。最後の2つの引数は省略可能だ。
サイズ演算:
xs.isEmpty コレクションが空であるかどうかを調べる。
xs.nonEmpty コレクションに要素が含まれているかを調べる。
xs.size コレクション内の要素の数。
xs.hasDefiniteSize xs が有限のサイズであることが明らかな場合 true を返す。
要素取得演算:
xs.head コレクションの最初の要素 (順序が定義されていない場合は、任意の要素)。
xs.headOption xsの最初の要素のオプション値、または xs が空の場合 None
xs.last コレクションの最後の要素 (順序が定義されていない場合は、任意の要素)。
xs.lastOption xsの最後の要素のオプション値、または xs が空の場合 None
xs find p xs の中で条件関数 p を満たす最初の要素のオプション値、または条件を満たす要素が無い場合 None
サブコレクション取得演算:
xs.tail コレクションから xs.head を除いた残りの部分。
xs.init コレクションから xs.last を除いた残りの部分。
xs slice (from, to) xs の一部の添字範囲内 (from 以上 to 未満) にある要素から成るコレクション。
xs take n xs の最初の n個の要素から成るコレクション (順序が定義されていない場合は、任意の n個の要素から成るコレクション)。
xs drop n コレクションから xs take n を除いた残りの部分。
xs takeWhile p xs内の要素を最初から次々とみて、条件関数 p を満たす限りつないでいったコレクション。
xs dropWhile p xs内の要素を最初から次々とみて、条件関数 p を満たす限り除いていったコレクション。
xs filter p xs内の要素で条件関数 p を満たすものから成るコレクション。
xs withFilter p このコレクションを非正格(non-strict) に filter したもの。後続の map, flatMap, foreach, および withFilter への呼び出しは xs の要素のうち条件関数 p が true に評価されるもののみに適用される。
xs filterNot p xs内の要素で条件関数 p を満たさないものから成るコレクション。
分割演算:
xs splitAt n xsn の位置で二分して (xs take n, xs drop n) と同値のコレクションのペアを返す。
xs span p xs を条件関数 p に応じて二分して (xs takeWhile p, xs.dropWhile p) と同値のペアを返す。
xs partition p xs を条件関数 p を満たすコレクションと満たさないものに二分して (xs filter p, xs.filterNot p) と同値のペアを返す。
xs groupBy f xs を判別関数 f に応じてコレクションの map に分割する。
要素条件演算:
xs forall p xs内の全ての要素に条件関数 p が当てはまるかを示す boolean 値。
xs exists p xs内に条件関数 p を満たす要素があるかどうかを示す boolean 値。
xs count p xs内の要素で条件関数 p 満たすものの数。
fold 演算:
(z /: xs)(op) z から始めて、左から右へと xs内の隣接する要素に二項演算 op を次々と適用したもの。
(xs :\ z)(op) z から始めて、右から左へと xs内の隣接する要素に二項演算 op を次々と適用したもの。
xs.foldLeft(z)(op) (z /: xs)(op) に同じ。
xs.foldRight(z)(op) (xs :\ z)(op) に同じ。
xs reduceLeft op 左から右へと空ではないコレクション xs内の隣接する要素に二項演算 op を次々と適用したもの。
xs reduceRight op 右から左へと空ではないコレクション xs内の隣接する要素に二項演算 op を次々と適用したもの。
特定 fold 演算:
xs.sum コレクション xs内の数値要素の値の和。
xs.product コレクション xs内の数値要素の値の積。
xs.min コレクション xs内の順序付けされたの値の最小値。
xs.max コレクション xs内の順序付けされたの値の最大値。
文字列演算:
xs addString (b, start, sep, end) xs内の要素を sep で区切った後、startend で挟んだ文字列を StringBuilder b に追加する。 start, sep, end は全て省略可能。
xs mkString (start, sep, end) xs内の要素を sep で区切った後、startend で挟んだ文字列に変換する。 start, sep, end は全て省略可能。
xs.stringPrefix xs.toString で返される文字列の先頭にあるコレクション名。
ビュー演算:
xs.view xs に対するビューを生成する。
xs view (from, to) xs の一部の添字範囲内を表すビューを生成する。

続いては、Iterable トレイト


Iterable トレイト トップ コレクション API の概要 Traversable トレイト 目次