Странное поведение сопоставления с шаблоном с AnyRef
def test1(a: Any) = a match {
case x: AnyRef => "AnyRef"
case _ => "None of the above"
}
def test2(a: Any) = a match {
case x: Double if x > 2 => "Double > 2"
case x: AnyRef => "AnyRef"
case _ => "None of the above"
}
Может кто-нибудь объяснить, почему в следующем, первом случае1.0
спички наAnyRef
, но во втором это не так. (Scala 2.9.0-1)
scala> test1(1.0)
res28: java.lang.String = AnyRef
scala> test2(1.0)
res29: java.lang.String = None of the above
редактировать -Обновление Scala 2.10 янв 2013: новый сопоставитель шаблонов исправляет это поведение (или, по крайней мере, делает его непротиворечивым) и методtest2
теперь возвращает AnyRef как дляtest1
.