Ruby:动态填充关联数组

时间:2011-05-30 13:43:09

标签: ruby

类似的东西:

arr=[]
arr[some variable] << string

如何在Ruby上实现这一目标?

谢谢;)

4 个答案:

答案 0 :(得分:4)

在Ruby中,Hash可以被视为关联数组。

# Initialize the hash.
noises = {}
# => {}

# Add items to the hash.
noises[:cow] = 'moo'
# => { :cow => 'moo' }

# Dynamically add items.
animal = 'duck'
noise  = 'quack'
noises[animal] = noise
# => { :cow => 'moo', 'duck' => 'quack' }

正如您所看到的,任何东西都可以成为密钥,在此示例中,我使用了符号:cow和字符串'duck'

Ruby Hash documentation包含您可能需要的所有示例。

答案 1 :(得分:4)

哈希是你需要的。当密钥不存在时,您可以利用默认值创建。在你的情况下,这是一个空数组。这是片段:

# this creates you a hash with a default value of an empty array
your_hash = Hash.new { |hash, key| hash[key] = Array.new }

your_hash["x"] << "foo"
your_hash["x"] << "za"
your_hash["y"] << "bar"

your_hash["x"]  # ==> ["foo", "za"]
your_hash["y"]  # ==> ["bar"]
your_hash["z"]  # ==> []

查看Hash类的ruby文档:http://ruby-doc.org/core/classes/Hash.html

答案 2 :(得分:0)

你应该在Ruby中使用Hash而不是Array。 Ruby中的数组不是关联的。

>> h = {'a' => [1, 2]}
>> key = 'a'
>> value = 3
>> h[key] << value
>> puts h
=> {"a"=>[1, 2, 3]}

答案 3 :(得分:0)

你可以简单地这样做

arr={}
arr["key"] = "string"

arr[:key] = "string"

并像

一样访问它
arr["key"] 
arr[:key]