Salut je veux faire ce qui suit. Je veux simplement surcharger la méthode [] pour accéder aux variables d'instance ... Je sais, ça n'a pas beaucoup de sens, mais je veux le faire pour une raison étrange: PAccéder aux variables en utilisant les parenthèses de surcharge [] dans Ruby
être quelque chose comme ça ...
class Wata
attr_accessor :nombre, :edad
def initialize(n,e)
@nombre = n
@edad = e
end
def [](iv)
self.iv
end
end
juan = Wata.new('juan',123)
puts juan['nombre']
Mais jeter l'erreur suivante:
overload.rb: 11: `[] ': méthode non définie 'iv' pour # (NoMethodError)
Comment puis-je faire cela?
EDIT
J'ai trouvé aussi cette solution:
def [](iv)
eval("self."+iv)
end
Excellent Chuck! Merci – flyer88
Envoyer fonctionne avec des méthodes seulement, attr_accessor ajoute à la fois les méthodes setter et getter pour vous, donc l'envoi appelle fondamentalement le getter. – khelll