Ruby Массив sort_by в переменной - PullRequest
0 голосов
/ 02 апреля 2020

Я бы хотел отсортировать Ruby Массив по ключу в переменной, но я не знаю, как.

Ситуация

my_arr.sort_by {|record| [record.year]}

Сортирует по году записи. Но я хочу отсортировать по автору, лейблу и т. Д. c. И этот тип сортировки хранится в переменной типа String. Поэтому мне нужно оценить фильтр как

my_arr.sort_by {|record| [record."something_in_the_var"]}

Конечно, у меня есть фиксированные фильтры. Но все же выясняю, как это сделать правильно.

Спасибо за советы

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Это то, что send делает

str = "label"
arr.sort_by{|rec| rec.send(str) }

send определяется в BasicObject, поэтому он есть у каждого объекта.

1 голос
/ 02 апреля 2020

вы можете использовать что-то вроде

sort_by_this = "label"

my_arr.sort_by {|record| [record[sort_by_this]]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...