На информационном ресурсе применяются рекомендательные технологии (информационные технологии предоставления информации на основе сбора, систематизации и анализа сведений, относящихся к предпочтениям пользователей сети "Интернет", находящихся на территории Российской Федерации)

Enable Globally

ExpandoMetaClass по умолчанию не используется. Например:




Object.metaClass.puts = {obj->
println obj
}

puts "hello"


Мы увидим MissingMethodException. Т.е. вся иерархия классов не получает данный метод, только Object. Однако если мы напишем:



Integer.metaClass


То все объекты класса Integer будут использовать ExpandoMetaClass и начнут понимать puts:



5.puts “yes”

Но что, если мы не хотим перечислять все классы в которые мы хотим добавить наш метод?

Для этого мы используем:



ExpandoMetaClass.enableGlobally()


После чего:
puts “hello”
будет работать везде

наверх