Рассмотрим следующие два фрагмента кода:
scala> def f1(x:Any) = x match { case i:String => i; case _ => null }
f1: (x: Any)String
scala> def f2(x:Any) = x match { case i:Int => i; case _ => null }
f2: (x: Any)Any
Почему f2
возвращает тип Any
, а f1
- String
? Я ожидал, что либо оба вернут Any
, либо f2
вернут Int
.