在Ruby中修改类外的实例变量
有谁能告诉我如何在类之外修改一个只有一行的类或实例变量吗?所以,考虑到这个代码在Ruby中修改类外的实例变量,ruby,metaprogramming,instance-variables,Ruby,Metaprogramming,Instance Variables,有谁能告诉我如何在类之外修改一个只有一行的类或实例变量吗?所以,考虑到这个代码 class Dummy def initialize() @var = 0 end def value @var * 2 end end d = Dummy.new 我不能改变以上任何一项。我只能添加一行,以便d.value返回6。有什么诀窍可以做到这一点吗 d.instance_variable_set("@var", 3) 但不要在实际的程序中
class Dummy
def initialize()
@var = 0
end
def value
@var * 2
end
end
d = Dummy.new
我不能改变以上任何一项。我只能添加一行,以便d.value返回6。有什么诀窍可以做到这一点吗
d.instance_variable_set("@var", 3)
但不要在实际的程序中这样做<代码>实例变量集主要用于元编程。如果你在其他环境中使用它,你几乎肯定是做错了
但不要在实际的程序中这样做<代码>实例变量集主要用于元编程。如果你在其他环境中使用它,你几乎肯定是做错了。Chuck回答的另一种选择: d、 实例_eval{@var=3}
Chuck答案的另一种选择: d、 实例_eval{@var=3} 瞧,只有一行,就像OP想要的一样
瞧,只有一行,就像OP想要的一样。是的,我认为这样做是错误的,但这就是问题的措辞。谢谢(虽然这些天我会传递一个符号。)@DaveNewton:嘿,真的。我非常习惯在那里使用字符串(因为通常我使用的是一个动态命名的变量),所以我只是不需要输入字符串。是的,我认为这样做是错误的,但这就是问题的措辞。谢谢(虽然这些天我会传递一个符号。)@DaveNewton:嘿,真的。我非常习惯在那里使用字符串(因为通常我使用的是一个动态命名的变量),所以我只需要输入一个字符串,即使它是不必要的。尝试
def d.set__dup_值(val)@var=val end;d、 设置愚蠢的值(3)
下面有一个滚动条。尝试def d.set__dup_值(val)@var=val end;d、 设置值(3)
class Dummy; def set_the_stupid_value(val) @var = val end end; d.set_the_stupid_value(3)