1

ハッシュを返すメソッドがあります。この方法を5回繰り返して、結果を配列にまとめたいと思います。今、私はこのようにそれを試しています:

votes = 5.times.collect{ create_vote }.inject{|memo, vote| memo << vote}

これは機能しません。メモは配列ではないため、失敗していると思います。この問題に対して私が取ることができる別のアプローチはありますか?

4

4 に答える 4

4

はい:

votes = 5.times.collect { create_vote }

より一般的には、次を使用しますeach_with_object

votes = 5.times.collect { create_vote }.each_with_object([]) {|o,memo| memo << o }

each_with_objectinjectRuby Coreは、意図したとおりに使用することが非常に一般的であることを発見したため、追加されたメソッドです。

于 2013-01-16T22:25:47.657 に答える
3

fixnumで#timesではなく、範囲で#mapを使用します

(0..5).map { create_vote }

または、時代から配列をマッピングします

5.times.map { create_vote }

それぞれが5つの要素を持つ配列を提供します。

于 2013-01-16T22:39:03.387 に答える
1

どうですか:

votes = (1..5).collect { create_vote }
于 2013-01-16T22:24:46.320 に答える