我從scala 2.7切換到命令scala 2.8並使用排序。它看起來非常直截了當,但我想知道我能否讓它稍微冗長些。例如:Scala 2.8 TreeMap和自定義排序
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
如果我再嘗試創建一個TreeMap我得到一個錯誤
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]()
^
但是,如果我明確指定對象A作爲訂購它工作正常。
scala> new collection.immutable.TreeMap[A, String]()(A)
res34: scala.collection.immutable.TreeMap[A,String] = Map()
我是否總是必須明確指定順序或是否有更短的格式?
感謝
警告:通過減去它們來比較ints是行不通的。也適用於這裏給出的大多數答案。 http://stackoverflow.com/questions/2728793/java-integer-what-is-faster-comparison-or-subtraction – 2012-03-19 20:17:30
... * iff *整數是*大*並且具有相反的符號。自從符號切換以後,該數字可能會溢出,產生相反的結果。但是,如果您正在處理*接近'Int.MAX_VALUE'的數字,那麼您已經在玩火了,對不對?我認爲減法「成語」在scala中特別簡潔/有用,因爲scala沒有(三元)條件表達式(?:) – kornfridge 2012-12-13 15:54:40