よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

July 28, 2003 [おもひで]

[Ruby] warning: multiple values for a block parameter

ruby 1.8.0 (2003-07-28) [i686-linux]にて。

Hash + 配列の場合

h = {:test => [[1,2],[2,3]]}
 
h[:test].each do |v|
  p v
end

結果:

[1, 2]
[2, 3]

Hash + Hashの場合

h = {:test => {1 => 2, 2 => 3}}
 
h[:test].each do |v|
  p v
end

結果:

test4.rb:3: warning: multiple values for a block parameter (2 for 1)
        from test4.rb:3
[1, 2]
test4.rb:3: warning: multiple values for a block parameter (2 for 1)
        from test4.rb:3
[2, 3]

Array#each{|item| ... }とHash#each{|key, val| ... }の違い。

でも、きっとまたハマるんだろうな、これ(^^;)。

ちなみに、以下のように書くとものすごく当たり前に見えるかもしれないけど、実際コーディングしてると頭の中でごちゃまぜになっちゃうかも。

[[1,2],[2,3]].each do |v|
  p v
end
{1 => 2, 2 => 3}.each do |v|
  p v
end

結果:

[1, 2]
[2, 3]
test4.rb:4: warning: multiple values for a block parameter (2 for 1)
        from test4.rb:4
[1, 2]
test4.rb:4: warning: multiple values for a block parameter (2 for 1)
        from test4.rb:4
[2, 3]

[Ruby-GNOME2] gtk/extconf.rb

ruby 1.8.0 (2003-07-28) [i686-linux]に変えたら、変なMakefileができるようになっちゃったな。dependの関係?

うーむ。


編集