Ruby headscratcher - переменная экземпляра не выводится - PullRequest
1 голос
/ 02 марта 2009

Я, вероятно, делаю что-то глупое, но не могу понять, что это такое.

Вывод, который я вижу из этой программы:

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 ]

8 голосов
/ 02 марта 2009

Вы никогда не устанавливали @abc в своем методе abc=. Это должно выглядеть как

def abc=(val)
  @abc = val
end
5 голосов
/ 02 марта 2009

В дополнение к ответу Логана, который говорит вам, в чем заключалась ошибка, вот как эта ошибка никогда бы не произошла:

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

  attr_reader :label
  attr_accessor :abc
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...