ruby - 使用 block 创建哈希 (Ruby)

标签 ruby hash block

我可以从 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/

相关文章:

cocoa - 如何执行存储在 NSDictionary 中的 block ?

ios - block 定义在整个项目中可用,没有重复的符号错误

ruby-on-rails - 将默认参数设置为一些 rspec 请求

ruby - 如何在 Jupyter notebook 中需要 ruby​​ gems?

ruby - Heroku 数据库 :pull Taps Load Error: no such file to load -- pg

perl - 谁能解释为什么 foreach 有效但 map 无效

java - SHA 哈希似乎无法正常工作

java - 带有 Ruby Web 应用程序连接的 Android JSON post 请求

ruby - 赋值和替换的区别

c++ - 为什么转置 CUDA 网格(但不是它的线程 block )仍然会减慢计算速度?