मैं स्कैला 2.7 से स्विच कर रहा हूं और स्केल 2.8 का ऑर्डर कर रहा हूं और ऑर्डरिंग का उपयोग कर रहा हूं। यह काफी सीधे आगे दिखता है लेकिन मैं सोच रहा था कि क्या मैं इसे थोड़ा कम वर्बोज़ बना सकता हूं। उदाहरण के लिए:स्कैला 2.8 ट्रीमैप और कस्टम ऑर्डरिंग
scala> case class A(i: Int)
defined class A
scala> object A extends Ordering[A] { def compare(o1: A, o2: A) = o1.i - o2.i}
defined module A
मैं तो एक ट्री-मैप बनाने का प्रयास करें, तो अगर मैं स्पष्ट रूप से इसे का आदेश देने ठीक काम करता है के रूप में वस्तु एक निर्दिष्ट मैं कोई त्रुटि मिलती है
scala> new collection.immutable.TreeMap[A, String]()
<console>:10: error: could not find implicit value for parameter ordering: Ordering[A]
new collection.immutable.TreeMap[A, String]()
^
हालांकि।
scala> new collection.immutable.TreeMap[A, String]()(A)
res34: scala.collection.immutable.TreeMap[A,String] = Map()
क्या मुझे हमेशा ऑर्डरिंग स्पष्ट रूप से निर्दिष्ट करना है या क्या कोई छोटा प्रारूप है?
धन्यवाद
चेतावनी: इन्हें घटाकर इनट की तुलना करना काम नहीं करता है। यहां दिए गए अधिकांश उत्तरों पर भी लागू होता है। http://stackoverflow.com/questions/2728793/java-integer-what-is-faster-comparison-or-subtraction –
... * iff * ints * big * हैं और विपरीत संकेत हैं। साइन स्विच के बाद से संख्या विपरीत परिणाम देने के बाद ओवरफ्लो कर सकती है। लेकिन अगर आप संख्याओं * के साथ काम कर रहे हैं * * Int.MAX_VALUE' के करीब, आप पहले ही आग से खेल रहे हैं, है ना? मुझे लगता है कि "idiom" घटाना विशेष रूप से संक्षिप्त/उपयोगी है क्योंकि स्कैला में (टर्नरी) सशर्त अभिव्यक्ति नहीं है (? :) – kornfridge