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