Suite à mon petit article de hier, je me lance dans une série d'articles courts, intitulée MetaTricks, présentant des petites astuces ou fonctionnalités liées à l'introspection et la métaprogrammation, avec petits scripts à l'appui.
Aujourd'hui, les accesseurs.
Les instructions attr_reader/writer/accessor :nom_variable_instance, même si elles forment une entorse au principe de l'encapsulation, sont très pratiques (et utilisées), et font appel à la métaprogrammation. Pourquoi ? Parce qu'elles implémentent automatiquement les méthodes d'accès en lecture et/ou en écriture pour une variable d'instance donnée (ces méthodes sont alors nommées : nom_variable et nom_variable=).
Aujourd'hui, les accesseurs.
Les instructions attr_reader/writer/accessor :nom_variable_instance, même si elles forment une entorse au principe de l'encapsulation, sont très pratiques (et utilisées), et font appel à la métaprogrammation. Pourquoi ? Parce qu'elles implémentent automatiquement les méthodes d'accès en lecture et/ou en écriture pour une variable d'instance donnée (ces méthodes sont alors nommées : nom_variable et nom_variable=).
La preuve :
class Barbare
def initialize a = 1
@alpha = a
end
end
a = Barbare.new.methods.sort
class Barbare
attr_accessor :alpha
end
b = Barbare.new.methods.sort
puts "Methodes ajoutees par attr_accessor = "
puts b-a
#=> [alpha, alpha=]
Où est la sorcellerie ?
0 commentaires:
Enregistrer un commentaire