исправление обезьян против class_eval?

class String
  def hello
    "world"
  end
end

String.class_eval {
  def world
    "hello"
  end
}

"a".world
=> "hello"
"b".hello
=> "world"

Кажется, они делают то же самое - добавляют метод к существующему классу. Так в чем разница?

14
задан Lai Yu-Hsuan 22 February 2012 в 16:58
поделиться