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
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。