0

これらの2つのRubyスクリプトを実行すると、2つの異なる答えが得られました。また、irbで最初のスクリプトを実行すると、2番目のスクリプトと同じ結果が得られます(2番目のスクリプトとirbの結果が正しいことがわかります)。最初のスクリプトに何か足りないものはありますか?助けてくれてありがとう。

Rubyバージョン:1.9.3

テキストエディタ:TextWrangler

h1 = {"n1"=> 00, "n2"=> 44}
h2 = {"n2"=> 66, "n3"=> 88}

最初のスクリプト-結果:{"n1"=>0, "n2"=>66, "n3"=>88}

puts h1.merge(h2) do |key, old, new|
  if old < new
     old
  else
     new
  end
end

2番目のスクリプト-結果:{"n1"=>0, "n2"=>44, "n3"=>88}

puts h1.merge(h2) {|key,old,new| old < new ? old : new}
4

1 に答える 1

1

最初のケースでは、Rubyはブロックがに属していると考えてputsmergeます{}

p h1.merge(h2) { |key, old, new|
  if old < new
   old
  else
   new
  end
}

更新:詳細については、ProgrammingRubyの本を参照してください。

于 2012-09-28T16:37:23.190 に答える