Ruby Language
Singe en Ruby
Recherche…
Singe patcher une classe
La correction de singe est la modification de classes ou d'objets en dehors de la classe elle-même.
Parfois, il est utile d'ajouter des fonctionnalités personnalisées.
Exemple: remplacer la classe de chaîne pour fournir une analyse à booléen
class String
def to_b
self =~ (/^(true|TRUE|True|1)$/i) ? true : false
end
end
Comme vous pouvez le voir, nous ajoutons la méthode to_b()
à la classe String, afin que nous puissions analyser n'importe quelle chaîne à une valeur booléenne.
>>'true'.to_b
=> true
>>'foo bar'.to_b
=> false
Singe patcher un objet
Tout comme le patchage des classes, vous pouvez également patcher des objets individuels. La différence est que seule cette instance peut utiliser la nouvelle méthode.
Exemple: remplacer un objet chaîne pour fournir une analyse à booléen
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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow