是否可以在 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/