Ruby Language
Apaplackning i Ruby
Sök…
Apa som lappar en klass
Monkey patchning är modifieringen av klasser eller objekt utanför själva klassen.
Ibland är det användbart att lägga till anpassad funktionalitet.
Exempel: åsidosätta strängklass för att tillhandahålla parsing till boolean
class String
def to_b
self =~ (/^(true|TRUE|True|1)$/i) ? true : false
end
end
Som ni kan lägga till lägger vi till to_b()
i String-klassen, så vi kan para valfri sträng till ett booleskt värde.
>>'true'.to_b
=> true
>>'foo bar'.to_b
=> false
Apa som lappar ett föremål
Som att lappa klasser kan du också lappa enstaka objekt. Skillnaden är att bara den ena instansen kan använda den nya metoden.
Exempel: åsidosätta ett strängobjekt för att tillhandahålla parsing till 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow