這是我的功能有人可以澄清爲什麼我的循環中變量的值不更新,直到循環關閉?
def rating(array)
sum_count = array.values.inject(0) { |sum_count,value| sum_count + value }
run_count = 0
array.each do |tag,count|
run_count += count
cum_distn = run_count/sum_count
logger.debug "cum_distn is #{cum_distn.to_f}; run_count is #{run_count.to_f}; sum_count is #{sum_count}"
if cum_distn < 0.25
...
elsif cum_distn < 0.5
...
else
...
end
end
end
對於我的陣列的每1計數2個目的,我的記錄器示出該:
cum_distn is 0.0; run_count is 1.0; sum_count is 2
cum_distn is 1.0; run_count is 2.0; sum_count is 2
似乎cum_distn的值只更新一次一個循環完成,而我打算在if函數打開之前立即更新。我有兩個問題:
(a)爲什麼會發生這種情況(因爲我看不到任何合理的解釋)? (b)我如何糾正這一點,做我想做的事?
尚未讀完你的問題,但你應該取代因爲'hash.values'比'array.values'更有意義...' – Damien 2011-12-22 15:56:37