0
注:我使用紅寶石1.9.3,我不能帶來任何外部依賴。我必須用核心庫來做到這一點。在Ruby中sort_by之後從散列訪問排序數組的最佳方式?
@run_histogram是名到值的數組中的哈希(兩個值此時,:失敗和:運行)
foo = @run_histogram.sort_by { |scenario_name, failure_and_run_count|
(failure_and_run_count[:failure].to_f/failure_and_run_count[:run].to_f) * -100.0
}
foo.each{|x| puts x[0]; puts x[1][:run]; puts x[1][:failure] }
的排序工作正常,但現在我的問題是,我希望能夠打印出scenario_name(哈希索引),然後輸出運行和失敗計數。
不幸的是,在使用sort_by之後,我不得不使用數組的索引,這很糟糕。他們是「神奇的數字」。我寧願繼續使用:run和:failure符號來訪問數據。
任何人都有更好的解決方案?
{...}與許多提出只是快速和骯髒:)我的打印聲明更復雜。 – Jazzepi
您的解決方案的工作,但我真的不明白爲什麼:(我看http://ruby-doc.org/core-1.9.3/Array.html#method-i-each,這是一個塊只需要一個參數,你如何使用一個帶有兩個參數的塊? – Jazzepi
如果它是一個Hash鍵/值對或一個數組,它將自動爲你擴展這個單一參數,它類似於你如何執行'x,y = method_call',其中''x'和'y'直接賦值,更正式的聲明方式可能是| |(x,y)|'但這通常不是必須的,你在'sort_by'中無意中完成了它。套路,你知道 – tadman