Ruby配列の初期化に関する注意点

Ruby配列の初期化の注意点

Rubyの初期化をする際の以下の2つの方法の違いについて。

# 配列初期化 1
a = Array.new(3, 'TEST')
# => ["TEST","TEST","TEST",]

# 配列初期化 2 
a = Array.new(3) {'TEST'}
# => ["TEST","TEST","TEST",]

 

同じもののように見えますよね!

これが注意点。

 

同じ初期化結果なのに処理後、結果が変わってくる

配列の先頭を取得して置き換えてみましょう。

# 配列初期化 1
a = Array.new(3, 'TEST')
word = a[0]
word.downcase!
# word => 'test'
# a => ["test","test","test",]

# 配列初期化 2 
a = Array.new(3) {'TEST'}
word = a[0]
word.downcase!
# word => 'test'
# => ["test","TEST","TEST",]

上記、1,2で初期化の方法により代入後の結果が変わってきます。

 

同じように見えますが後々の結果に影響してくる初期化。

注意が必要ですね。

 

もし、参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA