dimanche 13 janvier 2008

MetaTricks : accesseurs

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=).

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: