Можливо, існує очевидний спосіб зміни знаку, якщо сортувати за деяким числовим значенням
list.sortBy(- _.size)
Більш загально, сортування може бути здійснено методом, відсортованим із неявним впорядкуванням, який ви можете зробити явним, а впорядкування має зворотний (не перелік зворотного списку нижче) Ви можете зробити
list.sorted(theOrdering.reverse)
Якщо замовлення, яке ви хочете змінити, - це неявне впорядкування, ви можете отримати його неявно [Ordering [A]] (тип, який ви замовляєте) або краще Ordering [A]. Це було б
list.sorted(Ordering[TheType].reverse)
sortBy - це як використовувати Ordering.by, так що ви можете це зробити
list.sorted(Ordering.by(_.size).reverse)
Можливо, не найкоротше написати (порівняно з мінусом), але намір зрозумілий
Оновлення
Останній рядок не працює. Для того, щоб прийняти _
в систему Ordering.by(_.size)
, потреби компілятора , щоб знати , на який тип ми впорядкованість, так що він може введіть _
. Може здатися, що це був би тип елемента списку, але це не так, як сортується підпис
def sorted[B >: A](ordering: Ordering[B])
. Замовлення може бути ввімкнено A
, але також і для будь-якого предка A
(ви можете використовувати byHashCode : Ordering[Any] = Ordering.by(_.hashCode)
). І справді, той факт, що список є коваріантним, змушує цей підпис. Можна зробити
list.sorted(Ordering.by((_: TheType).size).reverse)
але це набагато менш приємно.