我正在学习Ruby语言,并且在编译简单的打印操作时看到了一件奇怪的事情。代码如下:
z = { 'mike' => 75, 'bill' => 18, 'alice' => 32 }
print z['bill'], " ", z['joe'], " "\n"
在这里,我得到的输出为18
;即使没有可用的值joe
也不会引发任何错误。
为什么?在其他语言中c#
,它将引发异常!
是因为我正在使用在线编译器进行编译吗?
如果在中找不到哈希键Hash
,则[]
默认情况下,该方法将返回nil
。因此,在这种情况下z['joe']
将导致nil
,在打印时将导致一个空字符串。
另一方面,初始化散列时,可以定义一个代码块,当散列中不存在该键时将运行该代码块。例如:
z = Hash.new do |hash, key|
raise("Key #{ key } is not valid")
end
作为替代方案,您还可以使用,Hash#fetch
并使其失败KeyError
,或者new
在键不退出时指定默认值或要执行的代码块(如中的)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句