Dictionary = Hash?

fun*_*hun 17 ruby hash dictionary

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

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

sep*_*p2k 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设置为默认值.


小智 18

在Ruby中,哈希是一个关键的价值存储

h = Hash.new
h['one'] = 1
h['one'] #=> 1
h['two'] #=> nil
Run Code Online (Sandbox Code Playgroud)

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

h = Hash.new {0}
h['one'] #=> 0
h = Hash.new {|hash,key| "#{key} has Nothing"}
h['one'] #=> "one has Nothing"
Run Code Online (Sandbox Code Playgroud)


Oli*_*rth 7

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