ruby - 使用哈希中的单个键和 block

标签 ruby

是否可以在 Ruby 中执行类似以下操作?

hash = {:person => {:name => 'Bob', :age => 33}}
hash[:person] do |person|
    person[:name] = 'Alice'
    puts "Here, have a beer #{person[:name]}" if person[:age]> 17
end

我试图避免这样写

hash[:person][:name] = 'Alice'
puts "Here, have a beer #{hash[:person][:name]}" if hash[:person][:age] > 17

编辑: 我的第一个例子可能有点不清楚。我希望能够执行 block 中的一些代码,而不仅仅是更新值。

最佳答案

您可能想查看 tap方法。

hash = {:person => {:name => 'Bob', :age => 33}}
hash[:person].tap do |person_hash|
  person_hash[:name] = 'Alice'
  puts "Changed name"
end

关于ruby - 使用哈希中的单个键和 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18897562/

相关文章:

ruby-on-rails - feedzirra windows 最新限制版本问题

ruby - 单例类和实例变量

ruby-on-rails - 如何按升序对 ruby​​ 数组进行排序但最后保持零

ruby-on-rails - Windows 和 SQLite3 到 Ubuntu 和 PostgreSQL 的迁移问题

ruby - 方法中临时变量的惯用 ruby

ruby - 更新对分数没有影响(预测 API)

css - Rails 5,Sass::SyntaxError 无法预编译 Assets

javascript - 如何在 javascript 中使用 ruby​​ 代码

ruby - 使用 RSpec 和 VCR 测试 Web API

ruby - 从目录树递归复制文件类型