Ruby - 从字符串在类方法中设置实例变量

use*_*843 2 ruby setter class 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)
Run Code Online (Sandbox Code Playgroud)

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

知道如何正确执行此操作吗?谢谢!

yza*_*vin 5

:从您的方法中删除。

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

而且,self这里可以是多余的。试试instance_variable_set('@' + key, val)

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