2009-03-01 4 views
1

Je fais probablement quelque chose de stupide mais je n'arrive pas à comprendre ce que c'est.Headscratcher Ruby - variable d'instance n'est pas sortie

La sortie que je vois de ce programme est

foo 

test 

Ce que je me attends de voir est

foo 
abc 
test 

Quelqu'un voit-il quoi que ce soit évidemment faux ici?

class Foo 

    def initialize(l) 
    @label = l 
    end 

    def label 
    @label 
    end 

    def abc 
    @abc 
    end 

    def abc=(abc) 
    @abc 
    end 

end 

foo = Foo.new("foo") 
foo.abc=("abc") 
puts foo.label 
puts foo.abc 
puts "test" 
+0

Nice, toujours apprendre à vérifier pour la stupidité. :) J'ai déjà fait ça. – epochwolf

Répondre

8

Vous ne définissez @abc dans votre méthode abc=. Il devrait ressembler à

def abc=(val) 
    @abc = val 
end 
+0

Merde. Je savais que ça allait être stupide. Merci mec. –

5

En plus de la réponse de Logan qui vous indique ce que l'erreur était, voici comment cette erreur ne se serait produit en premier lieu:

class Foo 
    def initialize(l) 
    @label = l 
    end 

    attr_reader :label 
    attr_accessor :abc 
end 
Questions connexes