字典基本上只是一个哈希表吗?
另外:在Ruby代码"Hash.new {0}“中,末尾的"{0}”是用来做什么的?
发布于 2011-01-18 00:09:36
表、字典和映射这三个词通常是同义词(在数据结构的上下文中)。散列表/散列映射是一种表/字典/映射。
{0}
是一个块(匿名函数),它忽略其参数并返回数字0。当在散列映射中找不到键时,将调用提供给Hash.new
的块以生成默认值。
也就是说,如果我先执行h = Hash.new {0}
,然后执行h["key that does not exist"]
,则返回0,而不是nil
(如果没有{0}
,我将得到它)。注意,在这种情况下,默认值是不可变的,并且不依赖于键,您不需要使用Hash.new
的块形式,只需执行Hash.new(0)
将0设置为默认值即可。
发布于 2011-01-18 00:13:43
在Ruby中,Hash是一个键、值存储
h = Hash.new
h['one'] = 1
h['one'] #=> 1
h['two'] #=> nil
{0}是一个块,如果您在何处调用不存在的键,则将对其进行评估,它类似于默认值。
h = Hash.new {0}
h['one'] #=> 0
h = Hash.new {|hash,key| "#{key} has Nothing"}
h['one'] #=> "one has Nothing"
发布于 2011-01-18 00:07:33
字典只是将一个键映射到一个值。实现这一点的方法有很多,哈希表就是其中之一。
https://stackoverflow.com/questions/4719272
复制