кажется, что TypeTags
работают только для параметров типа, которые используются в параметрах вызываемого метода, а не тип возвращаемого значения:Почему TypeTag не работает для возвращаемых типов?
scala> :paste
// Entering paste mode (ctrl-D to finish)
import scala.reflect.runtime.universe._
object Test {
def withParam[T: TypeTag](v: T): T = {
println(typeOf[T])
0.asInstanceOf[T]
}
def justReturn[T: TypeTag](): T = {
println(typeOf[T])
0.asInstanceOf[T]
}
}
// Exiting paste mode, now interpreting.
import scala.reflect.runtime.universe._
defined module Test
scala> val i: Int = Test.withParam(17)
Int
i: Int = 0
scala> val j: Int = Test.justReturn()
Nothing
j: Int = 0
Это согласуется с поведением манифеста в 2.9, но есть ли почему это невозможно сделать, и есть ли другой способ добиться этого эффекта?
Что еще может это сделать? То есть, что _should_ 'justReturn' возвращается? –