3
我有兩個未知類型的變量。我想在變量類型的組合上進行模式匹配,然後根據它進行操作 - 具體來說,我想實現Comparator[Any]
並根據它們的類型比較兩個變量。此代碼將產生期望的結果:關於兩個綁定變量類型的Scala模式匹配
class SomethingComparator extends util.Comparator[Any] {
override def compare(o1: Any, o2: Any) = List(o1, o2).map(_.isInstanceOf[Something]) match {
case List(true, true) => o1.asInstanceOf[Something].someInt.compareTo(o2.asInstanceOf[Something].someInt)
case List(true, false) => -1
case List(false, true) => 1
case _ => 0
}
}
有沒有辦法避免map
通話和模式匹配直接的類型,從而避免在第一場比賽兩個asInstanceOf
電話?
你都拿到了「可達代碼」錯誤,因爲第二和第三'case's是相同的。 'case'中的'o1'和'o2'受到匹配的約束,因此它們被視爲新變量,與舊的'o1'和'o2'不同。 – dhg 2012-07-10 20:32:50
Thx,只是想出了:) – Raman 2012-07-10 20:33:37