使用变量来访问Ruby中的Javascripts对象[var]等对象值

时间:2014-08-10 01:29:03

标签: javascript ruby

在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中的动态值访问对象的变量”所能想到的任何变化都没有给出任何结果。你怎么称呼它?

2 个答案:

答案 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!"