我正在尝试将值设置为名称以字符串形式给出的变量。做这个的最好方式是什么?我想到的第一种方法是做条件,如:
if attribute_string = 'code'
@code = val
elsif attribute_string = 'weight'
@weight = val
...
但这很丑陋,看起来很糟糕。有什么想法吗?
答案 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