参考:http://www.ne.jp/asahi/hishidama/home/tech/scala/c...
// 全て同じ値で満たすSeqを生成 // fill(生成する数)(埋める値) println(List.fill(5)(10)) // 範囲を指定してSeqを生成 // range(開始、終了、ステップ数) println(List.range(5, 20, 3))
List(10, 10, 10, 10, 10) List(5, 7, 9, 11, 13, 15, 17, 19)
val range = List range (0, 5) // 全て同じ値のmapをしたい場合カウンター変数 i は使用してないのでなんか気持ち悪い println(range map { i => 10 }) // しかし map { 10 } のような形だとエラーになる // println(range map { 10 }) // error // Function.const を使用すれば解決 println(range map { Function.const(20) }) class C { override def toString = "class c" } // 当然 Function.const の中はどんな型でもおk println(range map { Function.const(new C) })
List(10, 10, 10, 10, 10) List(20, 20, 20, 20, 20) List(class c, class c, class c, class c, class c)
// ruby の each_witn_index のようなループカウンターが欲しい場合は zipWithIndex を使う // 後ろにインデックスを加えた Tuple2 を戻すらしい println(List(100, 200, 300).zipWithIndex) List(100, 200, 300).zipWithIndex foreach { case(num, index) => println("%d: %d".format(index, num)) } // ほかのコレクションのメソッドでも使える val m = List(100, 200, 300).zipWithIndex map { case(num, index) => index + num } println(m)
List((100,0), (200,1), (300,2)) 0: 100 1: 200 2: 300 List(100, 201, 302)
最新コメント