2010-02-17 8 views
1

J'ai une classe comme çaRuby chaîne méthode alias

class Foo 
    attr_accessor :name 
end 

f = Foo.new 
f.name = "bar" 

et je voudrais à répondre à la chaîne méthode suivante avec l'attribut name afin que les interfaces avec un autre objet

f.baz.name == f.name 

Y a-t-il un moyen facile de retourner cela?

+0

Avez-vous besoin de faire cela plus d'une fois dans votre programme? Et avez-vous besoin de plus de niveaux d'indirection, tels que 'foo.baz.qux.name == foo.name'? –

+0

Je suis curieux, pourquoi voudriez-vous faire quelque chose comme ça? – severin

Répondre

3
#!/usr/bin/ruby1.8 

class Foo 

    attr_accessor :name 

    def baz 
    self 
    end 

end 

foo = Foo.new 
foo.name = 'Fred' 
p [foo.name, foo.baz.name] # => ["Fred", "Fred"] 
foo.baz.name = 'Barney' 
p [foo.name, foo.baz.name] # => ["Barney", "Barney"] 
+0

Merci Wayne! Je me sens assez bête de ne pas y penser. – calstad