Rubyを学習しているときに、各メソッドのこれらの使用法の両方が機能し、同じ出力を生成することに気付きました。Rubyがこれをどのように実現するのか(そして、自分の関数でどのように実現できるのか)疑問に思いました。
my_array = [["hello","goodbye"],["picture","perfect"]]
my_array.each do |array|
puts array[0] + " " + array[1]
end
my_array.each do |first, second|
puts first + " " + second
end
私の理解では、コードブロックを受け入れるメソッドの定義を作成する場合、yieldメソッドを使用して、コードブロックに引数を渡し、ブロックを呼び出します。しかし、提供されたコードブロックに応じて異なる引数を渡すように、yieldメソッドをどのように利用できますか?例の場合、yieldメソッドは、ブロック内で2つのパラメーター(つまり、1番目と2番目)が使用されると個々の配列要素を渡し、1つのパラメーターがブロック内で使用されると(つまり、配列)、配列自体を渡すように見えます。 )。