Traversable トレイト | 目次 |
最新版は Scala Documentation に移行しました。
探索可能(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 | xs と ys の両方の要素から成るコレクション。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 | xs を n の位置で二分して (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 で区切った後、start と end で挟んだ文字列を StringBuilder b に追加する。 start, sep, end は全て省略可能。 |
xs mkString (start, sep, end) | xs内の要素を sep で区切った後、start と end で挟んだ文字列に変換する。 start, sep, end は全て省略可能。 |
xs.stringPrefix | xs.toString で返される文字列の先頭にあるコレクション名。 |
ビュー演算: | |
xs.view | xs に対するビューを生成する。 |
xs view (from, to) | xs の一部の添字範囲内を表すビューを生成する。 |
続いては、Iterable トレイト
Traversable トレイト | 目次 |