Ruby headcratcher - переменная экземпляра не выводится

StackOverflow https://stackoverflow.com/questions/600683

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Результат, который я вижу из этой программы,

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"
Это было полезно?

Решение

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

def abc=(val)
  @abc = val
end

Другие советы

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

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

  attr_reader :label
  attr_accessor :abc
end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top