ハッシュを返すメソッドがあります。この方法を5回繰り返して、結果を配列にまとめたいと思います。今、私はこのようにそれを試しています:
votes = 5.times.collect{ create_vote }.inject{|memo, vote| memo << vote}
これは機能しません。メモは配列ではないため、失敗していると思います。この問題に対して私が取ることができる別のアプローチはありますか?
はい:
votes = 5.times.collect { create_vote }
より一般的には、次を使用しますeach_with_object
。
votes = 5.times.collect { create_vote }.each_with_object([]) {|o,memo| memo << o }
each_with_object
inject
Ruby Coreは、意図したとおりに使用することが非常に一般的であることを発見したため、追加されたメソッドです。
fixnumで#timesではなく、範囲で#mapを使用します
(0..5).map { create_vote }
または、時代から配列をマッピングします
5.times.map { create_vote }
それぞれが5つの要素を持つ配列を提供します。
どうですか:
votes = (1..5).collect { create_vote }