配列

Rubyの多重配列とeach

Rubyで多重配列とeachを組み合わせて使ってみる

Rubyの多重配列でeachを使うととても簡単に処理ができます。

各面積を算出するサンプルコードを書いてみました。

hw = [
  [10, 20],
  [30, 40],
  [50, 20]
]

num = []
hw.each do |length, width|
  # 面積
  num << length * width end # num => [200, 1200, 1000]

PHPメインで使っていたため、こんな簡単にかけるんだと衝撃でした。
PHPだと以下のような感じですね。

$hw = [
  [10, 20],
  [30, 40],
  [50, 20],
];

$num = [];
foreach ($hw as $nums) {
  // 面積
  $num[] = $nums[0] * $nums[1];
}
// num=>[200, 1200, 1000]

Rubyだとすぐ変数に入れることができて、変数名で明示的にわかるので可読性が上がりますね!
参考になれば幸いです。

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で初期化の方法により代入後の結果が変わってきます。

 

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

注意が必要ですね。

 

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