如何从哈希中获得正确的输出

时间:2012-11-30 23:56:42

标签: ruby

我有这样的哈希......

  scores = {:b3=>1000, :c3=>-1000}

  scores.each do |k,v|
    if v = 1000
      best_answer = k
    elsif v = -1000
      best_answer = k
    end
  end
  p 'BEST_ANSWER'
  p best_answer
  return best_answer

我一直在接受c3

best_answer应该是b3

我做错了什么?

2 个答案:

答案 0 :(得分:1)

首先,你需要从作业改为比较:

不是if v =而是if v ==

其次,当您达到“最佳答案”时,您可以返回best_answer并放弃迭代的其余部分。

答案 1 :(得分:0)

你实际上使用赋值运算符而不是相等的运算符。

=更改为==

if v == 1000
  best_answer = k; break
elsif v == -1000
  best_answer = k; break
end

您也想重构您的代码。

best_answer = scores.key(-1000)

best_answer = scores.min.first
p best_answer
#=> :b3