您如何在下一个哈希值中使用 'just-defined' 哈希值

How do you use a 'just-defined' hash value in your next hash value

如果我正在创建哈希:

h = {
  a: 5,
  b: a + 1
}

如何使用 a 的值在 ruby 语法中定义 b 的值?

一种方法是使用临时变量:

h = {
  a: x = 5,
  b: x + 1
}

这个怎么样:

h = {a: 5}.tap{|h| h[:b] = h[:a] + 1}
# => {:a=>5, :b=>6}

我会用老式的方式来做,而不用任何可爱的技巧:

h = {}
h[:a] = 5
h[:b] = h[:a] + 1

puts h #=> {:a => 5, :b => 6}