Ruby奇数个哈希错误的参数

时间:2017-12-29 15:09:10

标签: ruby ruby-on-rails-3 ruby-on-rails-4

case look
  when 'side'
        hash1 = {
            'num' => 5,
            'style' => 'sideStyle',
        }

  when 'front'
        hash1 = {
            'num' => 8,
            'style' => 'frontStyle',
        }

  when 'back'
        hash1 = {
            'num' => 4,
            'style' => 'backStyle',
            'special' => 'yes',
        }

  else
        hash1 = {
            'num' => 2,
            'style' => 'noStyle',
        }
  end

  myStyle = Hash[hash1]

我的代码看起来像这样。

当我运行这段代码时,我得到“哈希的奇数个参数”。

这是从哈希的正确方法吗?有人可以帮助我如何解决它。

1 个答案:

答案 0 :(得分:1)

连续的哈希初始化太多。只需将case的结果分配给值:

my_style = 
  case look
  when 'side'
        {
            'num' => 5,
            'style' => 'sideStyle',
        }

  when 'front'
        {
            'num' => 8,
            'style' => 'frontStyle',
        }

  when 'back'
        {
            'num' => 4,
            'style' => 'backStyle',
            'special' => 'yes',
        }

  else
        {
            'num' => 2,
            'style' => 'noStyle',
        }
  end

要干,我个人最好这样做:

result = 
  case look
  when 'side' then [5, "sideStyle"] 
  when 'front' then [8, "frontStyle"] 
  when 'back' then [4, "backStyle", "yes"] 
  else [2, "noStyle"]
  end 
result.zip(%w|num style special|).map(&:rotate).to_h