字典基本上只是一个哈希表吗?
还有奖励:在Ruby代码“Hash.new {0}”中,最后的“{0}”是什么?
答案 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)
字典是一个概念界面。哈希表是具体的实现。