我不确定在什么情况下我想使用Hash#fetch
over Hash#[]
。是否存在一个可以很好用的常见场景?
三个主要用途:
-
当该值是强制性的,即没有默认值时:
options.fetch(:repeat).times{...}
你也会收到一条很好的错误消息:
key not found: :repeat
-
当该值可以为nil
or false
默认值是别的东西:
if (doit = options.fetch(:repeat, 1))
doit.times{...}
else
# options[:repeat] is set to nil or false, do something else maybe
end
-
当你不想使用default
/default_proc
哈希值:
options = Hash.new(42)
options[:foo] || :default # => 42
options.fetch(:foo, :default) # => :default
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)