Dictionary = Hash?

时间:2011-01-18 00:05:44

标签: ruby dictionary hash

字典基本上只是一个哈希表吗?

还有奖励:在Ruby代码“Hash.new {0}”中,最后的“{0}”是什么?

4 个答案:

答案 0 :(得分:32)

单词table,dictionary和map通常用于同义词(在数据结构的上下文中)。哈希表/哈希映射是一种表/字典/映射。

{0}是一个块(匿名函数),它忽略它的参数并返回数字0.调用Hash.new的块,当在一个密钥中找不到密钥时,产生一个默认值哈希地图。

即。如果我h = Hash.new {0}然后h["key that does not exist"],我会返回0,而不是nil(我会在没有{0}的情况下获得)。请注意,在这种情况下,默认值是不可变的并且不依赖于键,您不需要使用Hash.new的块形式,您可以Hash.new(0)将0设置为默认值。

答案 1 :(得分:18)

在Ruby中,Hash是一个关键的值存储

h = Hash.new
h['one'] = 1
h['one'] #=> 1
h['two'] #=> nil

{0}是一个块,如果你在哪里调用一个不存在的Key,它将被评估,它就像一个默认值。

h = Hash.new {0}
h['one'] #=> 0
h = Hash.new {|hash,key| "#{key} has Nothing"}
h['one'] #=> "one has Nothing"

答案 2 :(得分:7)

字典只是将映射到。有很多方法可以实现这一目标;哈希表就是其中之一。

答案 3 :(得分:3)

字典是一个概念界面。哈希表是具体的实现。