【问题标题】:How do you use a 'just-defined' hash value in your next hash value您如何在下一个哈希值中使用“刚刚定义”的哈希值
【发布时间】:2015-05-16 14:49:12
【问题描述】:

如果我正在创建一个哈希:

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

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

【问题讨论】:

  • 哈希创建后为什么不设置:b键?
  • 这毫无意义。如果该值是一个常数,您可以简单地对其进行硬编码。如果它是在哈希创建之前创建的变量,只需使用它。
  • 我只是想知道是否有红宝石技巧。有时红宝石就是那样奇怪。如果没有诀窍,我可以求助于只做一个标准的变量定义

标签: ruby hash hashtable


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这个呢:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-06-04
        • 2013-07-21
        • 1970-01-01
        • 2011-02-15
        • 2010-10-20
        • 2020-02-20
        • 1970-01-01
        • 2014-03-30
        • 2016-06-27
        相关资源
        最近更新 更多