我不确定在什么情况下我会想要使用Hash#fetch它Hash#[].是否有一个常见的场景,它会在哪些方面有用?
Mar*_*une 24
三个主要用途:
当值是必需的时,即没有默认值:
options.fetch(:repeat).times{...}
Run Code Online (Sandbox Code Playgroud)
你也得到一个很好的错误信息:
key not found: :repeat
Run Code Online (Sandbox Code Playgroud)当值可以是nil或者false默认值是其他值时:
if (doit = options.fetch(:repeat, 1))
doit.times{...}
else
# options[:repeat] is set to nil or false, do something else maybe
end
Run Code Online (Sandbox Code Playgroud)当你不想使用default/ default_proc散列:
options = Hash.new(42)
options[:foo] || :default # => 42
options.fetch(:foo, :default) # => :default
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2305 次 |
| 最近记录: |