我有这个哈希数组:
- :name: Ben
:age: 18
- :name: David
:age: 19
- :name: Sam
:age: 18
我需要将它们分组age
,所以他们最终会变成这样:
18:
- :name: Ben
:age: 18
- :name: Sam
:age: 18
19:
- :name: David
:age: 19
我尝试这样做:
array = array.group_by &:age
但我收到此错误:
NoMethodError (undefined method `age' for {:name=>"Ben", :age=>18}:Hash):
我究竟做错了什么?我正在使用 Rails 3.0.1 和 Ruby 1.9.2
The &:age
意味着group_by
方法应该调用age
数组项上的方法来获取数据分组。这age
方法未在您的情况下属于哈希的项目上定义。
这应该有效:
array.group_by { |d| d[:age] }
另外,对于较新的 Ruby 版本,您可以使用以下快捷方式:
array.group_by { _1[:age] }
_1
这里反映了传递给块的第一个位置参数#group_by
method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)