繁体   English   中英

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

[英]What's the difference between arrays and hashes?

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

从Ruby-Doc:

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

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

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

数组:数组用于存储数据集合。 数组中的每个对象都有分配给它的唯一键。 我们可以使用此唯一键访问数组中的任何对象。 数组中的位置从“ 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”

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

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

最近,这两个词一起“变混了”。 认为这是这样的:

“哈希”将具有键->值对:

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

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

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

但是,对还是错,您也会看到键->值对(称为“数组”)的事物。

我认为差异主要取决于您何时以及如何使用它们。 将数组称为散列不是很麻烦,反之亦然,但是您应该知道其中的区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM