前提・実現したいこと
rubyを使ってハッシュを要素に含む配列を作り、あるインデックス番号のある要素に後から値を代入するプログラムを書いています。
具体的には、arrayのハッシュ番号[i]のnameキーに各曜日を代入したいです。
発生している問題・エラーメッセージ
下記ソースコードを実行すると、次の結果が出力されます。
array => [{:name=>"土", :work=>nil}, {:name=>"土", :work=>nil}, {:name=>"土", :work=>nil}, {:name=>"土", :work=>nil}, {:name=>"土", :work=>nil}, {:name=>"土", :work=>nil}, {:name=>"土", :work=>nil}]
このように、すべての要素のname keyに土曜日が入ってしまいます。
該当のソースコード
ruby
1array=Array.new(7,{name: nil, work: nil}) 2Day = %w(日 月 火 水 木 金 土) 3i=0 4Day.each do |day| 5 array[i][:name]=day 6 i+=1 7end
試したこと
irbにて、array配列を作成し、array[0][:name]に直接"日"を入れようとしましたが、同一の現象が起こりました。
ruby
1$ irb 2irb(main):001:0> array=Array.new(7,{name: nil, work: nil}) 3=> [{:name=>nil, :work=>nil}, {:name=>nil, :work=>nil}, {:name=>nil, :work=>nil}, {:name=>nil, :work=>nil}, {:name=>nil, :work=>nil}, {:name=>nil, :work=>nil}, {:name=>nil, :work=>nil}] 4irb(main):002:0> Day = %w(日 月 火 水 木 金 土) 5=> ["日", "月", "火", "水", "木", "金", "土"] 6irb(main):003:0> array[0][:name]="日" 7=> "日" 8irb(main):004:0> array 9=> [{:name=>"日", :work=>nil}, {:name=>"日", :work=>nil}, {:name=>"日", :work=>nil}, {:name=>"日", :work=>nil}, {:name=>"日", :work=>nil}, {:name=>"日", :work=>nil}, {:name=>"日", :work=>nil}]
補足情報
bash
1$ ruby -v 2ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux] 3$ irb --version 4irb 1.2.6 (2020-09-14)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/17 08:23