我想创建一个使用Array的sort_by
方法的功能的方法。红宝石如何覆盖红宝石sort_by
可以想象我有这个数据
data_array = [{project: 'proj', version: '1.1'}, {project: 'proj2', version: '1.11'}, {project: 'proj3', version: '1.2'}]
我希望能够调用这样的方法:
data_array.natural_sort_by{|x| x[:version] }
的实际调用发生这种情况会实现这样的事情:
data_array.sort_by{|x| MyModule.naturalize_str(x[:version]) }
继承人我目前的unworking代码:
Array.module_eval do
def natural_sort_by(&block)
sort_by{|x| Rearmed.naturalize_str(eval(block))}
end
end
我不太清楚如何做到这一点。
你知道的[可枚举(http://ruby-doc.org/core-2.3.1/Enumerable.html)模块? –
是的,我愿意。我需要首先解决主要问题。我可能会到达那里,但我不知道它会适用于所有Enumerable。 –