Модификация переменной экземпляра вне класса в Ruby - PullRequest
0 голосов
/ 13 декабря 2011

Может кто-нибудь сказать мне, как изменить переменную класса или экземпляра вне класса с только одной строкой ?Итак, учитывая этот код

class Dummy
    def initialize()
        @var = 0
    end
    def value
        @var * 2
    end
end

d = Dummy.new

, я не могу изменить ничего из вышеперечисленного.Я могу добавить только одну строку, чтобы d.value возвращало 6. Существуют ли какие-либо хитрости для этого?

Ответы [ 3 ]

3 голосов
/ 13 декабря 2011
d.instance_variable_set("@var", 3)

Но не делайте этого в реальной программе. instance_variable_set в основном полезен для метапрограммирования. Если вы используете это в каком-то другом контексте, вы почти наверняка делаете это неправильно.

1 голос
/ 13 декабря 2011

Альтернатива ответу Чака:

d.instance_eval‹@var = 3}

0 голосов
/ 13 декабря 2011
class Dummy; def set_the_stupid_value(val) @var = val end end; d.set_the_stupid_value(3)

Вуаля, только одна строка, как хотел ОП.

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