用于访问对象属性的Ruby String

时间:2015-04-24 00:33:37

标签: ruby

我有一个包含对象及其属性的文本文件(objects.txt)。 该文件的内容类似于:

Object.attribute = "data"

在另一个文件上,我正在加载objects.txt文件,如果我输入:

puts object.attribute打印出data

当我尝试使用字符串访问对象和/或属性时出现问题。我在做的是:

var = "object" + "." + "access" puts var

打印出object.access而不是"data"的内容。

我已经尝试使用instance_variable_get并且它可以工作,但我必须修改object.txt并在开头添加@以使其成为实例变量,但我不能这样做,因为我不是object.txt文件的所有者。

作为一种解决方法,我可以解析object.txt文件并获取我需要的数据,但我不想这样做,因为我想利用已有的数据。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

是的,看跌期权是正确的吐出" object.access"因为你正在创建那个字符串。

为了评估字符串,就像它是ruby代码一样,你需要使用eval()

例如:

var = "object"  +    "."  + "access"
puts eval(var)
=> "data"

请注意,如果您正在评估可能来自其他用户的任何内容,那么这样做非常危险。