我會通過本教程:http://tutorials.jumpstartlab.com/projects/jsattend.html排序與零哈希作爲重點
在迭代7,第3步中我們得到排序哈希,稱爲state_data,它具有零作爲重點。所提出的解決方案是:
state_data = state_data.sort_by{|state, counter| state unless state.nil?}
不幸的是,這是行不通的紅寶石1.9.2p290(2011-07-09修訂32553)x86_64的-darwin11.0.0。例如:
~% irb
>> things = { nil => "a", 2 => "b", 3 => "c" }
>> things.sort_by { |k, v| k unless k.nil? }
ArgumentError: comparison of NilClass with 2 failed
from (irb):6:in `sort_by'
from (irb):6
from /Users/jacopo/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
這同樣與當量:
>> things.sort_by { |k, v| k if k }
ArgumentError: comparison of NilClass with 2 failed
from (irb):3:in `sort_by'
from (irb):3
from /Users/jacopo/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
在教程的情況下,由於它的分選對狀態的兩個字母的代碼,一個可能的解決方案是:
state_data = state_data.sort_by{|state, counter| state.nil? ? "ZZ" : state }
這顯然是一個黑客。
Ruby的處理方式是什麼?
我覺得有一些代碼味道,如果我得到一個零作爲一個哈希鍵。我想解決這個問題。 –