我有这样的哈希......
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
我做错了什么?
答案 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