根据字符串设置类变量

时间:2014-10-04 02:45:38

标签: ruby

我正在尝试将值设置为名称以字符串形式给出的变量。做这个的最好方式是什么?我想到的第一种方法是做条件,如:

if attribute_string = 'code'
  @code = val
elsif attribute_string = 'weight'
  @weight = val
...

但这很丑陋,看起来很糟糕。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Object#instance_variable_set

从名称中获取/设置实例变量
attribute_name = "code"
val = "value"
instance_variable_set :"@#{attribute_name}", val

# Retrieve value with instance_variable_get
instance_variable_get :"@#{attribute_name}" # => "value"

答案 1 :(得分:1)

您应该能够使用instance_variable_set基于字符串设置实例变量。以下示例将输出5

attribute_string = 'code'
instance_variable_set("@#{attribute_string}", 5)
puts @code