यदि आप कुछ सांख्यिक मान से सॉर्ट करते हैं, तो संकेत को बदलने का स्पष्ट तरीका हो सकता है
list.sortBy(- _.size)
अधिक आम तौर पर, छँटाई विधि द्वारा किया जा सकता है एक अंतर्निहित आदेश के साथ क्रमबद्ध किया जाता है, जिसे आप स्पष्ट कर सकते हैं, और आदेश में एक रिवर्स होता है (नीचे दी गई सूची रिवर्स नहीं) आप कर सकते हैं
list.sorted(theOrdering.reverse)
यदि आप जिस ऑर्डर को रिवर्स करना चाहते हैं, वह निहित ऑर्डर है, तो आप इसे [ऑर्डरिंग [ए]] (ए प्रकार जिसे आप ऑर्डर कर रहे हैं) या बेहतर ऑर्डरिंग [ए] द्वारा प्राप्त कर सकते हैं। यह होगा
list.sorted(Ordering[TheType].reverse)
SortBy ऑर्डरिंग.बी का उपयोग करने जैसा है, इसलिए आप कर सकते हैं
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)
लेकिन यह बहुत कम सुखद है।