有人能告诉我如何在只有一行的类之外修改类或实例变量吗?所以,鉴于此代码
class Dummy
def initialize()
@var = 0
end
def value
@var * 2
end
end
d = Dummy.new
我无法改变上述任何一项。我只能添加一个行,以便d.value返回6.是否有任何技巧可以执行此操作?
答案 0 :(得分:3)
d.instance_variable_set("@var", 3)
但是不要在实际程序中这样做。 instance_variable_set
主要用于元编程。如果你在其他一些环境中使用它,你几乎肯定做错了。
答案 1 :(得分:1)
Chuck回答的另一种选择:
d.instance_eval {@var = 3}
答案 2 :(得分:0)
class Dummy; def set_the_stupid_value(val) @var = val end end; d.set_the_stupid_value(3)
Voilà,只有一条线,就像OP想要的那样。