メソッド定義の中でメソッド定義

Rubyでは、メソッド定義の中でもメソッドを定義することができます。
以下のプログラムでは、outerメソッドの定義の中でmethodというメソッドを再定義しています。そのため、outerメソッドの呼び出し前後で、methodの戻り値が変化しています。

def method
  return "Yahoo!"
end

def outer
  def method
    return "Google"
  end
end

p method    #=> "Yahoo!"
outer
p method    #=> "Google"