rubyのclearメソッドについて質問があります。
下記のように、配列arrにハッシュhを追加していくプログラムを作成したとします。
ruby
1arr = Array.new 210.times{ |i| 3 h = Hash.new 4 b[:key] = i 5 6 arr.push h 7 8} 9puts arr
この場合、配列arrは
ruby
1arr = [{:key => 0}, {:key => 1}, ..., {:key => 9}]
となり、これは期待通りの結果なので問題ないのですが、
次に下記のようにarr.push hの後にh.clearを入れて、ハッシュhを毎回ループ処理の最後に空にするプログラムを考えます。
ruby
1arr = Array.new 210.times{ |i| 3 h = Hash.new 4 b[:key] = i 5 6 arr.push h 7 8 h.clear 9} 10puts arr
実行すると、配列arrは
ruby
1[{}, {}, ..., {}]
のようになってしまいます。
ハッシュhに対してclearメソッドを使用しているのですが、配列arrも空になる仕様なのでしょうか?
ご存知の方がいれば教えていただきたいです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー