Я пытаюсь создать метод, который использует функциональность метода Array sort_by
.Ruby как переопределить ruby sort_by
Imagine У меня есть эти данные
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]) }
Heres my current unworking code:
Array.module_eval do
def natural_sort_by(&block)
sort_by{|x| Rearmed.naturalize_str(eval(block))}
end
end
Я не совсем уверен, как этого добиться.
вы знаете о [Enumerable] (http://ruby-doc.org/core-2.3.1/Enumerable.html) модуля ли? –
Да, да. Сначала мне нужно было решить основную проблему. Я, вероятно, доберусь туда, хотя я не знаю, что это применимо ко всем Enumerable. –