2011-01-16 9 views
2

私はscalaには新しく、この(かなり)簡単な問題を解決することはできません。Scalaのforループの値を使ったフィルリスト

私はこのような定義済みの値のリストをインスタンス化することができます知っている:

val myList = List(1,2) 

私は1から100000までのすべての整数のリストを埋めるためにしたいです。私の目標は、リストにvarを使用せず、リストを埋めるためにループを使用することではありません。

これを行う「機能的」な方法はありますか?

答えて

10

いずれかのトリックを行います。 (あなたがREPLでそれらをしようとすると、しかし、一般的に仕事に行くされていないすべての10万エントリを、印刷しようとするために起こっていることをお勧めする。)

List.range(1,100001) 
(1 to 100000).toList 
+0

うわー、これは私が思ったよりも簡単です。ありがとう! –

+1

'(1〜100000)'は「オンデマンドで」番号を生成し、 'toList'は全ての要素をメモリに強制的に作成します。もう1つは、コレクションを満たすために興味があると思います。「Seq#tabulate」です。 – shellholic

+0

@shellholic:確かに。 1から1000000までの数字だけが必要な場合は、おそらくリストは必要ありません。しかし、OPはリストを要求したので、「toList」はそれです。 –

2

私もに非常に新しいですスカラ、それはかなり素晴らしいですね。

Rexには正解がありますが、思考のための食糧として:評価されていないリストが必要な場合(おそらく、リスト内のアイテムを評価する計算が高価な場合や、怠け者)では、Streamを使用できます。

Stream.from(0,1).takeWhile(_<=100000) 

これは、リストを使用するほとんどの状況で使用できます。

関連する問題