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"
字典只是将键映射到值 。 有很多方法可以实现这一目标; 哈希表就是其中之一。
字典是一个概念界面。 哈希表是具体实现。