数组和哈希之间有什么区别?

时间:2011-05-23 13:10:16

标签: ruby-on-rails ruby arrays hash

Ruby中的数组和哈希之间有什么区别?

4 个答案:

答案 0 :(得分:31)

来自Ruby-Doc:

数组是有序的,任何对象的整数索引集合。数组索引从0开始,如在C或Java中。假定负索引相对于数组的末尾 - 也就是说,索引-1表示数组的最后一个元素,-2是数组中最后一个元素的倒数,依此类推。查看here了解更多信息。

哈希是键值对的集合。它类似于Array,除了索引是通过任何对象类型的任意键完成的,而不是整数索引。哈希值按照插入相应键的顺序枚举它们的值。

哈希具有访问哈希中不存在的键时返回的默认值。默认情况下,该值为nil。查看here了解更多信息。

答案 1 :(得分:10)

阵列: 数组用于存储数据集合。数组中的每个对象都分配有唯一的键。我们可以使用这个唯一键访问数组中的任何对象。数组中的位置从“0”开始。第一个元素位于“0”,第二个元素位于第一个位置等。

实施例: 在 - irb。

中尝试以下操作
bikes = Array.new
bikes = %w[Bajaj-Pulsar, Honda-Unicorn, TVS-Apache, Yamaha, Suzuki]

您在数组中添加了4个元素。

puts bikes[3]
Yamaha,

将新元素添加到位置5。

bikes[5] = "Hardly Davidson"

哈希: 与数组一样,哈希也用于存储数据。哈希将对象指向另一个对象。考虑为字符串分配一定的“含义”。每次引用该字符串时,都会引用其“含义”。

示例:

bikes = Hash.new
bikes = {
'Bajaj' => 'Pulsar 220, Pulsar 200, Pulsar 180 and Pulsar 150',
'Honda' => 'Unicorn, Shine and Splendor',
'TVS' => 'Apache, Star City, and Victor'
}

立即尝试:

bikes['Bajaj']

你得到=> “Pulsar 220,Pulsar 200,Pulsar 180和Pulsar 150”

答案 2 :(得分:8)

数组是一个有序的事物列表:a,b,c,d

散列是键/值对的集合:john有一个标致,bob有一个renault,adam有一个浅滩。

答案 3 :(得分:0)

这两天这两个词一起“哈希”。我认为这是怎么回事:

“哈希”会有键 - >价值对:

(top -> tshirt, bottom -> shorts, feet -> shoes)

“数组”通常会有一个索引:

([0]tshirt, [1]shorts, [2]shoes)

但是,对或错,你会看到带钥匙的东西 - >值对称为“数组”。

我认为差异主要取决于您何时以及如何使用它们。你不会在调用数组时遇到很多麻烦,反之亦然,但你应该知道其中的区别。