我有一个我要分组的数组,看起来像是' group_by'功能对我的情况没问题。
http://apidock.com/rails/Enumerable/group_by
我在Rails 3.2.13中使用它。
grouped_array = my_array.group_by(&:my_function)
# Assume run 'my_function' have result1 on element1, element3 and result2 on element2, element4, then:
# grouped_array = {
# result1 => [element1, element3],
# result2 => [element2, element4],
# ...
# }
但我发现它在4.0.2中被弃用了。
我应该使用哪种功能?
答案 0 :(得分:15)
它没有被弃用。
在1.8.7之前的Ruby没有group_by
内置,所以rails添加了它。 Ruby 1.8.7添加了group_by,但是当rails group_by
返回有序哈希时,ruby 1.8.7返回了普通哈希值(因为有序哈希值还没有在ruby 1.8.7中),所以rails继续覆盖方法
Ruby 1.9确实有group_by
,所以rails不再需要覆盖它,但是这个代码留给那些仍在运行1.8.7的人。
Rails 4降低了ruby 1.8.7的兼容性,所以这样的代码从rails中删除了。它并没有被弃用,但它不再是rails,因为它已成为ruby标准库的一部分。
答案 1 :(得分:1)
Array#sort可以解决这个问题吗?
@my_array.sort { |item1, item2| item1.my_function <=> item2.my_function }