2012-12-01 61 views
2

我已经构建了一个表单标记并获取了从用户中选择的值。这就是我得到:如何将散列中的字符串转换为整数

params[:user_answer_ids] = {"170"=>["599"], "162"=>["561", "563", "565"], "160"=>["549", "550"]} 

现在我想所有的字符串转换成该哈希为int,如:

params[:user_answer_ids] = {170=>[599], 162=>[561, 563, 565], 160=>[549, 550]} 

我想转换为int,因为我想比较问答IDS后来。目前,我必须在循环散列时使用to_i方法,所以我想知道是否有任何方法将所有字符串一次转换为int。

回答

3

你可以假的吧...

h={"170"=>["599"], "162"=>["561", "563", "565"], "160"=>["549", "550"]} 
h.default_proc = proc{|h,k| h.key?(k.to_s) ? h[k.to_s].map(&:to_i) : nil} 
p h[162] 

叶数据不变。

+0

非常感谢,它的工作原理:D – Thanh

+0

不应该只是最好的检索密钥,如果它不是'nil'把它转换为'to_i'? –

+0

我喜欢它,数据不变。 – Healer