3
알 수없는 유형의 두 변수가 있습니다. 변수 유형의 조합에 대해 패턴 일치를 수행하고이를 기반으로 조치를 취하고 싶습니다. 특히 Comparator[Any]
을 구현하고 유형에 따라 두 변수를 비교하고 싶습니다.두 개의 바인드 변수 유형에 대한 스칼라 패턴 일치
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 '의'o1'과'o2'는 일치에 의해 구속되므로 오래된'o1'과'o2'와는 다른 새로운 변수로 취급됩니다. – dhg
Thx, 그냥 알아 냈어 :) – Raman