Ruby Language
Monkey Patching in Ruby
Ricerca…
Scimmia che rattoppa una classe
La patch delle scimmie è la modifica di classi o oggetti al di fuori della classe stessa.
A volte è utile aggiungere funzionalità personalizzate.
Esempio: sovrascrivere la classe stringa per fornire l'analisi su booleano
class String
def to_b
self =~ (/^(true|TRUE|True|1)$/i) ? true : false
end
end
Come puoi vedere, aggiungiamo il metodo to_b()
alla classe String, quindi possiamo analizzare qualsiasi stringa con un valore booleano.
>>'true'.to_b
=> true
>>'foo bar'.to_b
=> false
Scimmia che rattoppa un oggetto
Come il patching delle classi, puoi anche applicare patch a singoli oggetti. La differenza è che solo quell'istanza può utilizzare il nuovo metodo.
Esempio: sovrascrivere un oggetto stringa per fornire l'analisi su booleano
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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow