Ruby headcratcher - переменная экземпляра не выводится
-
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
Не связан с StackOverflow