Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

Scala ループして生成する Rubyのtimesと同じようなやつ 令和最新版 Iterator.continuallyを使え

指定した個数の何かが欲しいことがScalaではよくあります。

インデックスほしいとき

toを使うと良いでしょう。

(0 to 10) map (n => s"count $n")
// => Seq("count 0", "count 1", ..., "count 10")

個数だけ指定してインデックスいらないとき

Seq.fillを使うと良いでしょう(暫定一位)。

val rands = Seq.fill(42)(scala.util.Random.nextInt())
rands // => Seq(123, 999, 323, 11, 983, ..., 234)

Iterator.fillを使うと良いでしょう。

val rands = Iterator.fill(42)(scala.util.Random.nextInt())
rands.toList // => List(123, 999, 323, 11, 983, ..., 234)

個数を制限したくないときはIterator.continually使うと良いでしょう。

val rands = Iterator.continually(scala.util.Random.nextInt()).take(42)
rands.toList // => List(123, 999, 323, 11, 983, ..., 234)

continuallyは無限に続くIteratorを作るので、takeして欲しいだけ取出しましょう。

Any ideas?

もっとクールな方法があったら教えてくださいね。

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?