Отсортируйте счетное в порядке убывания

Что лучший способ состоит в том, чтобы отсортировать Enumerable в порядке убывания?

Я делал @array.sort.reverse или @array.sort_by{|song| song.title }.reverse

Я предполагаю, что мог сделать что-то как @array.sort{|a, b| b.title <=> a.title}, но я нахожу, что это трудно читает и подробный.

7
задан Doctor Mohawk 2 May 2013 в 03:49
поделиться

2 ответа

Исполнение Array.reverse не является очень плохим. Стоимость использования @array.sort.reverse - это дополнительное дублирование массива плюс обратное (n/2-элементные переключатели). Так что да, я думаю, что это должно быть приемлемо, если вы думаете, что это читается яснее.

Смотрите его источник для подробностей. И еще, я думаю, что использование @array.sort.reverse действительно обеспечивает "немного" лучшую читабельность (но это не очень сложно прочитать в любом случае).

5
ответ дан 7 December 2019 в 05:22
поделиться

Я не уверен, работает ли это лучше, чем Уэйн Конрад Само описанный «очевидный кусок нежелания», но вы можете определить SORT_BY_DESCENDING Как

Enumerable.class_eval do
  def sort_by_descending(&block)
    sort { |a, b| block.bind(b).call <=> block.bind(a).call }
  end
end

затем называют это следующим образом:

@songs.sort_by_descending(&:title)
3
ответ дан 7 December 2019 в 05:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: