Traversableトレイト | 目次 |
コレクション階層のトップはTraversableトレイトです。 Traversableトレイトの唯一の抽象メソッドはforeachです。
def foreach[U](f: Elem => U)
Traversableを実装するコレクションクラスはこのメソッドを定義するだけで大丈夫です。他のメソッドはTraversableから継承できます。
foreachメソッドはコレクションの全ての要素を辿って、与えられた操作fを各要素に適用することを意図しています。 この操作の型はElem => Uで、Elemはコレクションの要素の型で、Uは任意の結果型です。 fはその副作用のためだけに呼び出されます。さらに言えばfの結果はforeachによって捨てられます。
Traversableは多くの具象メソッドも定義し、その全てを以下のテーブルに挙げています。 これらのメソッドは以下のカテゴリに分類できます:
何であるか | 何をするか |
---|---|
抽象メソッド: | |
xs foreach f | xsの全ての要素に対して関数fを実行する。 |
追加: | |
xs ++ ys | xsとysの両方の要素からなるコレクション。 ysはTraversableOnceコレクション、つまりTraversableまたはIterator。 |
写像: | |
xs map f | xsの全ての要素に関数fを適用して得られるコレクション。 |
xs flatMap f | xsの全ての要素に、コレクションを値とする関数fを適用し、結果を連結して得られるコレクション。 |
xs collect f | xsの要素のうち部分関数fが定義されている全ての要素に対してfを適用し、結果を集めて得られるコレクション。 |
変換: | |
xs.toArray | このコレクションを配列に変換する。 |
xs.toList | このコレクションをリストに変換する。 |
xs.toIterable | このコレクションをイテラブルに変換する。 |
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が有限の大きさを持つと分かっていれば真。 |
要素取得: | |
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を含まずtoまで)。 |
xs take n | xsの最初のn要素からなるコレクション(もし順序付けが定義されていなければ任意のn要素) |
xs drop n | このコレクションのxs take n以外の残り。 |
xs takeWhile p | このコレクション内の要素のプレフィックスで、全てがpを満たす最長のもの。 |
xs dropWhile p | 全てがpを満たす最長のプレフィックスを除いたコレクション。 |
xs filter p | xsの要素で述語pを満たす全ての要素からなるコレクション。 |
xs withFilter p | このコレクションの非正格なフィルタ。 続くmap, flatMap, foreachおよびwithFilterの呼び出しはxsの要素で条件pが真となるものにだけ適用される。 |
xs filterNot p | xsの要素で述語pを満たさない全ての要素からなるコレクション。 |
分割: | |
xs splitAt n | xsをある位置で分割し、コレクションのペア(xs take n, xs drop n)を与える。 |
xs span p | xsを述語に従って分割し、コレクションのペア(xs takeWhile p, xs.dropWhile p)を与える。 |
xs partition p | xsを2つのコレクションのペアに分割する。 1つは述語pを満たす要素を含み、 もう1つは満たさない要素を含み、 コレクションのペア(xs filter p, xs.filterNot p)を与える。 |
xs groupBy f | xsを判別関数fに従いコレクションのマップに分割する。 |
要素状態: | |
xs forall p | xsの全ての要素でpが成り立つか示す真偽値。 |
xs exists p | xsのある要素でpが成り立つか示す真偽値。 |
xs count p | xsの要素でpを満たす要素数。 |
折り畳み: | |
(z /: xs)(op) | zから始まり左から右へ、二項演算opをxsの隣り合った要素に適用する。 |
(xs :\ z)(op) | zから始まり右から左へ、二項演算opをxsの隣り合った要素に適用する。 |
xs.foldLeft(z)(op) | (z /: xs)(op)と同じ。 |
xs.foldRight(z)(op) | (xs :\ z)(op)と同じ。 |
xs reduceLeft op | 左から右へ、二項演算opを空でないコレクションxsの隣り合った要素に適用する。 |
xs reduceRight op | zから始まり右から左へ、二項演算opを空でないコレクションxsの隣り合った要素に適用する。 |
特定の折り畳み: | |
xs.sum | コレクションxsの数値要素値の和。 |
xs.product | コレクションxsの数値要素値の積。 |
xs.min | コレクションxsの順序付けされた要素値の最小値。 |
xs.max | コレクションxsの順序付けされた要素値の最大値。 |
文字列: | |
xs addString (b, start, sep, end) | xsの全ての要素をセパレータsepで区切って表示し、文字列startとendで囲った文字列をStringBuilderに追加する。 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トレイト | 目次 |