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
edit - Scala 2.10 update Янв 2013 : новый сопоставитель шаблонов исправляет это поведение (или, по крайней мере, делает его непротиворечивым), а метод test2
теперь возвращает «AnyRef», как для test1
.