商品#、商品、価格を記載した製品ファイルがあります。私はこのファイルを読んで、アイテム#がキーであり、製品と価格が値であるハッシュとして初期化したいと思います。ここに私のファイルですCSVのようなファイルからハッシュを作成する
199, Shoes, 59.99
211, Shirts, 19.99
245, Hats, 25.99
689, Coats, 99.99
712, Beanies, 6.99
私はこのようにしたいと思います。
products = {
199 =>['Shoes', 59.99],
211 =>['Shirts', 19.99],
245 =>['Hats', 25.99],
689 => ['Coats', 99.99],
712 => ['Beanies', 6.99]
}
これは私が思いつくことができるもので、実際にはそれが望むものではありません。
products_file = File.open("files.txt")
products_hash = []
while ! products_file.eof?
product_hash = products_file.gets.chomp
print product_hash.split(', ')
end
そして、ここで私が思い付いた出力です:CSVファイルには、products.csv
と呼ばれ、これをしたとして、私はあなたのデータを保存した
["199", "Shoes", "59.99"]
["211", "Shirts", "19.99"]
["245", "Hats", "25.99"]
["689", "Coats", "99.99"]
["712", "Beanies", "6.99"]
+1、偉大な答え。私はこのトピックに関する壊れた記録ですが、[私は 'each_with_object'(http://phrogz.net/tap-vs-each_with_object)で'タップ 'を主張します。 – Phrogz
私の「タップ」の問題は、私が変換したいデータのメソッドを呼び出すのが好きであり、私の結果になる空のコレクションではありません。しかし、私はこの使用事例で 'into'、または' fill_with'が私の懸念を少し緩和する良いエイリアスになると思います。個人的に私は常に 'inject'を使いますが、新しいRubyistsは' each_with_object'を理解しやすいと分かりました。 –