上記2クラスにおいて、2.9で追加になった関数は「replaceAllLiterally」と「seq」の2つだけっぽい。ざっと見ただけだから見落としはあるかも。あとCollections系の継承してるクラスで追加になったものは省く。
replaceAllLiterallyは、エスケープした上でjava.lang.StringのreplaceAllを実行する。java.lang.StringのreplaceAllは引数に渡した文字列が正規表現として扱われる。
// 正規表現として扱われるので、*とか入るとこうなる
scala> "args*".replaceAll("s*", "s")
java.lang.String = sasrsgss*s
replaceAllLiterallyの場合はエスケープされるので、正規表現として解釈されずに記述した通りに置換される。
// *も普通に変換される
scala> "args*".replaceAllLiterally("s*", "s")
String = args
次にseqだけど、これはthis.iteratorを返す。つまりその文字列を1文字ずつ扱うIterator[Char]が返ってくる。と言っても文字列クラス自体がIterableとして扱えるScalaでは、そんなに使う機会もなさそうな気もする。
scala> "args*".seq
Iterator[Char] = non-empty iterator
【修正履歴】
05/19 23:40頃 : パラコレのソースが動かなかったので削除。REPLで動いたものを貼ったつもりだったのだけど、どうも幻を見ていたようだ。