class String def hello "world" end end String.class_eval { def world "hello" end } "a".world => "hello" "b".hello => "world"
Кажется, они делают то же самое - добавляют метод к существующему классу. Так в чем разница?