アドレスを求める計算の練習
変数と値のリストから、アドレスを求めるプログラムを作ってみました。
マッチングやらタプルやら末尾再帰やら、やっぱりScala便利です。
object main { def main(argv:Array[String]) { val tes = List(("a",1),("b",2),("a",3),("d",5),("e",6)); val rc = test(tes,Map()) println("test"+ rc) } def test(a:List[(String,Int)],b:Map[String,Int]):Map[String,Int] = a match { case List() => b case (k,v)::xs => if(b.contains(k)) { test(xs, b) } else { test(xs, b + (k -> b.size)) } } }