2012-11-30 81 views
0

正確的輸出我有像這樣的哈希...如何從哈希

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

我究竟做錯了什麼?

回答

1

首先,你需要從分配改爲比較:

if v =而是if v ==

其次,當你達到你的 「最佳答案」 ,你可以返回best_answer並放棄其餘的迭代。

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 
+0

嗯,這似乎是正確的,但我仍然得到c3作爲輸出:( – thefonso

+0

你想念回報,秒,更新答案 – 2012-12-01 00:10:17