1

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

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

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"
4

2 回答 2

8

你从来没有在你的abc=方法中设置@abc。它应该看起来像

def abc=(val)
  @abc = val
end
于 2009-03-01T22:40:28.790 回答
5

除了告诉您错误是什么的 Logan 的回答之外,以下是该错误一开始就不会发生的方式:

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

  attr_reader :label
  attr_accessor :abc
end
于 2009-03-02T10:06:31.920 回答