Ruby headscratcher - 不输出实例变量

时间:2009-03-01 22:37:51

标签: ruby syntax instance-variables

我可能做了一些愚蠢的事情,但我无法弄清楚它是什么。

我从这个程序看到的输出是

foo

test

我期待看到的是

foo
abc
test

有人在这里看到任何明显错误吗?

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"

2 个答案:

答案 0 :(得分:8)

您永远不会在abc=方法中设置@abc。它应该看起来像

def abc=(val)
  @abc = val
end

答案 1 :(得分:5)

除了Logan的答案,它告诉你错误是什么,这里的错误永远不会发生在第一位:

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

  attr_reader :label
  attr_accessor :abc
end