Ruby - 从string中设置类方法中的实例变量

时间:2017-06-14 13:52:03

标签: ruby class setter instance-variables

我有一个方法register(key, val)。我试图将key添加为类的实例变量,并将其设置为val。现在我尝试使用self.instance_variable_set(':@' + key, val),但我收到此错误:

in `instance_variable_set': `:@table' is not allowed as an instance variable name (NameError)

我打电话给register('table', {'key' => 'value'})

知道怎么做得好吗?谢谢!

1 个答案:

答案 0 :(得分:4)

从您的方法中删除:

self.instance_variable_set('@' + key, val)

此外,self在这里可能是多余的。试试instance_variable_set('@' + key, val)

并且更喜欢使用插值而不是连接。 instance_variable_set("@#{key}", val)