来自鲁比·科恩斯about_hashes.rb
:
为什么你可能想使用#fetch
代替#[]
当访问哈希键时?
默认情况下,使用#[]
如果存在则检索哈希值,如果不存在则返回 nil *。
Using #fetch
给你一些选择(请参阅文档#fetch http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-fetch):
-
fetch(key_name)
:如果键存在则获取值,引发KeyError
如果没有
-
fetch(key_name, default_value)
:如果key存在则获取value,返回default_value
否则
-
fetch(key_name) { |key| "default" }
:如果键存在则获取值,否则运行提供的块并返回值。
每一种都应该根据情况需要使用,但是#fetch
功能非常丰富,可以根据其使用方式处理许多情况。出于这个原因,我倾向于使用它来访问密钥#[]
.
* 正如 Marc-André Lafortune 所说,通过以下方式访问密钥#[]
将会通知#default_proc
如果存在,否则返回#default
,默认为nil
. See 文档条目为::new http://ruby-doc.org/core-2.0/Hash.html#method-c-new了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)