今日のメソッド

少したまったのでまとめてみた。

  • IterableLike

zip(that):自身とthatを先頭から要素ごとにタプルにしたIterableを返す。要素数が異なる場合、余りは捨てられる。要素の多い方に揃える場合は zipAll を使う。 例) "hoge" zip "Scala"

zipWithIndex:先頭の要素から順に (hoge,0),(piyo, 1),(foo, 2)...と添字をzipした(タプルにした)Iterableなオブジェクトを返す。

sliding(n,s) sつづつ進みながらn個をとる。 ex) "1234567".sliding(3,2) → Iterator("123", "345", "567") http://bit.ly/bJNfY6

  • TraversableLike

groupBy(f):fの戻り値を元に分類する。ex) List(1,2,3,4).groupBy(_ %2 == 0) は Map( (true,List(2, 4)), (false,List(1, 3)))

collect(pf):パーシャルファンクションを引数に取るmap。isDefinedAtがfalseの場合は出力から除外される。yuroyoro氏のページに詳しい説明あり。 http://bit.ly/a9BuWF

distinct:重複を取り除いた新しいオブジェクトを返す。 Listに使った場合は toSet.toListとほぼ同じ、ただし出現順は保証される。ex) "Scalable Language".distinct

filterNot(p: (A) ⇒ Boolean):pがfalseになる要素を抽出する。List#-- はlist1 filterNot(list2 contains)への置換えを推奨されている。

partition(p):要素を引数にとって、Booleanを返す「関数p」を適用し、2つに分割したコレクションのタプルを返す。ex) List(1,2,3,4,5).partition(_%2==0)

  • TraversableOnce

mkString(sep):要素をsepで接続した文字列を返す。 文字列の最初と最後を同時に指定出来る mkString(start,sep,end)もある。 http://bit.ly/bA4z2k

max:最大値を取得する。最小値を取得する「min」もある。自前順位付けのためのOrdering[T]なオブジェクトを指定することもできる。 http://bit.ly/99ykJy

  • SeqLike

+:(elm):先頭にelmを加えた新しいSeqを返す。末尾に「:」が付いているので、演算子のように使う場合には「0 +: List(1,2,3)」の様に引数が前に来る。末尾に加える場合は「:+」を使う。

sortBy(f):ソートキーを作成する関数を引数にとってソートする。ソート順は、デフォルトでは昇順(暗黙的に使われるOrdering型の第2引数で決まる)。比較関数を指定する sortWithよりチョット手軽。

  • PartialFunction

lift:obj.isDefinedAt(n)がtureであればSome(obj(n))を、falseであればNoneを返すような関数を返す。ex) List(1,2,3,4,5).lift(2)は、Some(3)

  • Stream

iterate(s)(f):初期値と前項を引数にとる関数からストリーム(無限数列)を作る。たとえば Longな偶数列は Stream.iterate(2L)(_+2)

from (start:Int, step:Int):startから始る、step間隔のStream[Int]を作る。Streamはmap,filter,foldLeftなどを持つ。 http://bit.ly/bzsgh6

  • StringLike

lines:行毎に分割し、改行文字を除いた文字列のIteratorを返す。改行文字を含んだすべてが欲しい場合は、 linesWithSeparators http://bit.ly/9qPY0w

*(n:Int):文字列をn回繰り返し連結した新しい文字列を返す。 もちろん「"Scala" * 10」と演算子のようにも使える。 http://bit.ly/bfBFvu

  • RichChar

asDigit:java.lang.Character.MAX_RADIX(=36)を基数とした文字の数値としての値を返す。ex) '1'.asDigit は1, 'A'なら10 http://bit.ly/ahKpDj

  • Source

fromFile(n, e):eでエンコードされたファイル読み込んでSoueceオブジェクトを作る。他にも類似のメソッド(fromInputStreamなど)あり。 http://bit.ly/9F6zDy

  • WrappedString

r:文字列から正規表現クラス(Regex)を作る。Predefで implicit def wrapString(s: String) が定義されているため、間接的にjava.lang.Stringに対しても使える。

  • Option

getOrElse(default) : Noneだったらdefaultを返す。パターンマッチや条件分岐を使わず、手軽にOptionの中身を取り出せる。 Optionのままデフォルトを使いたい時はOption.orElse