Поиск…


Обезьяна, исправляющая класс

Патч обезьяны - это модификация классов или объектов вне самого класса.

Иногда полезно добавлять пользовательские функции.

Пример: переопределить класс String, чтобы обеспечить синтаксический анализ для boolean

class String 
  def to_b
    self =~ (/^(true|TRUE|True|1)$/i) ? true : false
  end
end

Как вы можете видеть, мы добавляем метод to_b() к классу String, поэтому мы можем анализировать любую строку до логического значения.

>>'true'.to_b 
=> true
>>'foo bar'.to_b
=> false

Обезглавливание объекта

Подобно исправлению классов, вы также можете исправлять отдельные объекты. Разница в том, что только один экземпляр может использовать новый метод.

Пример: переопределить строковый объект, чтобы обеспечить синтаксический анализ для boolean

s = 'true'
t = 'false'    

def s.to_b
  self =~ /true/ ? true : false
end

>> s.to_b
=> true
>> t.to_b
=> undefined method `to_b' for "false":String (NoMethodError)


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow