Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 排序嵌套散列错误“;can';t将符号转换为整数“;_Ruby - Fatal编程技术网

Ruby 排序嵌套散列错误“;can';t将符号转换为整数“;

Ruby 排序嵌套散列错误“;can';t将符号转换为整数“;,ruby,Ruby,我不明白为什么会失败 1.9.3p0 :022 > hash = Hash.new => {} 1.9.3p0 :023 > hash["jon"] = [:name=>"jon",:age=>22] => [{:name=>"jon", :age=>22}] 1.9.3p0 :024 > hash["bob"] = [:name=>"bob",:age=>19] => [{:name=>"bob", :ag

我不明白为什么会失败

1.9.3p0 :022 > hash = Hash.new
 => {} 
1.9.3p0 :023 > hash["jon"] = [:name=>"jon",:age=>22]
 => [{:name=>"jon", :age=>22}] 
1.9.3p0 :024 > hash["bob"] = [:name=>"bob",:age=>19]
 => [{:name=>"bob", :age=>19}] 
1.9.3p0 :025 > hash["sid"] = [:name=>"sid",:age=>25]
 => [{:name=>"sid", :age=>25}] 
1.9.3p0 :026 > hash
 => {"jon"=>[{:name=>"jon", :age=>22}], "bob"=>[{:name=>"bob", :age=>19}], "sid"=>[{:name=>"sid", :age=>25}]} 
1.9.3p0 :027 > hash.sort_by { |k, v| v[:age] }
TypeError: can't convert Symbol into Integer
    from (irb):27:in `[]'
    from (irb):27:in `block in irb_binding'
    from (irb):27:in `each'
    from (irb):27:in `sort_by'
    from (irb):27
    from /usr/share/ruby-rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
1.9.3p0 :028 > hash.sort_by { |k, v| v[:age].to_i }
TypeError: can't convert Symbol into Integer
    from (irb):28:in `[]'
    from (irb):28:in `block in irb_binding'
    from (irb):28:in `each'
    from (irb):28:in `sort_by'
    from (irb):28
    from /usr/share/ruby-rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
1.9.3p0 :029 >
1.9.3p0:022>hash=hash.new
=> {} 
1.9.3p0:023>散列[“jon”]=[:name=>“jon”,:age=>22]
=>[{:name=>“jon”,:age=>22}]
1.9.3p0:024>散列[“bob”]=[:name=>“bob”,:age=>19]
=>[{:name=>“bob”,:age=>19}]
1.9.3p0:025>散列[“sid”]=[:名称=>“sid”,:年龄=>25]
=>[{:name=>“sid”,:age=>25}]
1.9.3p0:026>散列
=>{“jon”=>[{:姓名=>“jon”,:年龄=>22}],“bob”=>[{:姓名=>“bob”,:年龄=>19}],“sid”=>[{:姓名=>“sid”,:年龄=>25}]
1.9.3p0:027>hash.sort_by{k,v | v[:age]}
TypeError:无法将符号转换为整数
from(irb):27:in`[]'
from(irb):27:in`block in irb_binding'
发件人(irb):27:在“每个”
发件人(irb):27:“排序依据”中的
起始(irb):27
from/usr/share/ruby-rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in`'
1.9.3p0:028>hash.sort_by{k,v|v[:age].to|i}
TypeError:无法将符号转换为整数
from(irb):28:in`[]'
from(irb):28:in`block in irb_binding'
发件人(irb):28:在'each'中
from(irb):28:in'sort_by'
来自(irb):28
from/usr/share/ruby-rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in`'
1.9.3p0:029>
本文建议它应该可以工作:

您的语法已关闭

hash["jon"] = [:name=>"jon",:age=>22] 
意味着

hash["jon"] = [{:name=>"jon",:age=>22}]
因此,请将代码更改为:

hash = Hash.new
hash["jon"] = {:name=>"jon",:age=>22}
hash["bob"] = {:name=>"bob",:age=>19}
hash.sort_by { |k, v| v[:age] }
你的语法不正确

hash["jon"] = [:name=>"jon",:age=>22] 
意味着

hash["jon"] = [{:name=>"jon",:age=>22}]
因此,请将代码更改为:

hash = Hash.new
hash["jon"] = {:name=>"jon",:age=>22}
hash["bob"] = {:name=>"bob",:age=>19}
hash.sort_by { |k, v| v[:age] }

或者使用
hash.sort_by{k,v | v[0][:age]}
,但您的方式更好。:)或者使用
hash.sort_by{k,v | v[0][:age]}
,但您的方式更好。:)