Dictionary = Hash?

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

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

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

{0}是一个块(匿名函数),它忽略其参数并返回数字0.当在哈希映射中找不到键时,调用给予Hash.new的块以产生默认值。

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

在Ruby中,哈希是一个关键的价值商店

 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" 

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

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