我想創建一個使用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。 –