在JavaScript中,我可以这样做:
var someObject = {
bar: "Hello, world"
};
foo="bar";
console.log (someObject[foo]);
控制台会告诉我“Hello world”
我如何在ruby中执行此操作?
#This does not work:
@someObject.bar="Hello, world" #@someObject holds a class
foo="bar"
puts @someObject[foo]
这让我疯了!
我用Google搜索了一下。很多。我用“Ruby访问具有变量的对象属性”和“使用ruby中的动态值访问对象的变量”所能想到的任何变化都没有给出任何结果。你怎么称呼它?
答案 0 :(得分:1)
Ruby拥有更多的经典遗产,因此对象不像JavaScript那样可扩展。根据您的使用情况,您将使用哈希对象或开放结构。
person = {
"name": "John Smith"
}
puts person["name"]
大多数情况下,您会看到使用符号而不是字符串文字。
person = {
:name => "John Smith",
}
puts person[:name]
最后,如果你真的想要与JavaScript中相同类型的语义,你可以使用struct或open struct。
person = OpenStruct.new
person.name = "John Smith"
person.age = 70
person.pension = 300
答案 1 :(得分:0)
好像你想要Hash
。
someObject = {bar: "Hello, world!"} # symbol
foo = :bar
someObject[foo]
# => "Hello, world!"
anotherObject = {"bar" => "Hello, another world!"} # string
foo = "bar"
anotherObject[foo]
# => "Hello, another world!"