我可以从 block 创建 Ruby 哈希吗?
像这样的东西(虽然这具体不起作用):
foo = Hash.new do |f|
f[:apple] = "red"
f[:orange] = "orange"
f[:grape] = "purple"
end
最佳答案
在 Ruby 1.9 中(或加载了 ActiveSupport,例如在 Rails 中),您可以使用 Object#tap
,例如:
foo = Hash.new.tap do |bar|
bar[:baz] = 'qux'
end
您可以将 block 传递给 Hash.new
,但这用于定义默认值:
foo = Hash.new { |hsh, key| hsh[key] = 'baz qux' }
foo[:bar] #=> 'baz qux'
就其值(value)而言,我假设您对这些 block 内容有更大的目的。语法 { :foo => 'bar', :baz => 'qux' }
可能是您真正需要的。
关于ruby - 使用 block 创建哈希 (Ruby),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3669974/