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

emu*_*rad 24 ruby arrays hash ruby-on-rails

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

int*_*iot 32

来自Ruby-Doc:

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

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

哈希值具有访问哈希中不存在的键时返回的默认值.默认情况下,该值为nil.看看这里的更多.


Unk*_*per 10

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

示例:在 - irb中尝试以下操作.

bikes = Array.new
bikes = %w[Bajaj-Pulsar, Honda-Unicorn, TVS-Apache, Yamaha, Suzuki]
Run Code Online (Sandbox Code Playgroud)

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

puts bikes[3]
Yamaha,
Run Code Online (Sandbox Code Playgroud)

将新元素添加到位置5.

bikes[5] = "Hardly Davidson"
Run Code Online (Sandbox Code Playgroud)

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

例:

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'
}
Run Code Online (Sandbox Code Playgroud)

立即尝试:

bikes['Bajaj']
Run Code Online (Sandbox Code Playgroud)

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


Que*_*tin 8

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

哈希是键/值对的集合:约翰有一个标致,鲍勃有一个雷诺,亚当有一个福特.