Scala を使い始める
Programming Scala は9割程度読んだので、簡単な作業に使い始めてみる。簡単なテキスト処理をやってみた。データのパースやら、正規表現を使った置き換えなど、基本的な物。
この手の物で、すこしならして、次は昔書いたアプリの移植かな。
import scala.io.Source import scala.util.matching def getId2CustMap: Map[String,String] = { // 空の mutable map の生成 val map1 = scala.collection.mutable.Map.empty[String,String] /* , で区切られた id と関連情報をマップにロード。 * この Source の用法はよく使いそう。行を分割した結果を * Pattern match で変数に入れてみる。とりあえず使ってみたかっただけ。 */ for (line <- Source.fromFile("ids.txt").getLines) { line.split(",") match { case Array(id, cu) => map1 += (id -> cu) case _ => println("match failed.") } } // 空の immutable map に上記の mutable map を加える事で、 // 上記で作った物の immutable map を作る。 Map.empty[String,String] ++ map1 } val mp = getId2CustMap def cuAdder(mtch: scala.util.matching.Regex.Match): String = mtch.matched + "/" + mp(mtch.matched) /* 別ファイルから1行ずつ読み、マップの key に対応する部分を * key/value に置き換える。 * replaceAllIn の関数の引数はリテラルでかけた。上に定義した * 関数をそのまま渡すと、文法エラー。また、文法があやふやに * なってる。 */ for (line <- Source.fromFile("data.txt").getLines) { val r = """(4\d{7})""".r.replaceAllIn(line, m => m.matched + "/" + mp(m.matched)) println(r) }