Scala 2.10.0 Milestone 4の反射で奇妙な問題に遭遇しています。最初に私が期待する方法で動作しますもののため:(同じセッションで)同様Scalaの平等型2.10反射API
scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._
scala> trait A[X]; trait B[Y] extends A[Y]
defined trait A
defined trait B
scala> typeOf[B[String]].parents
res0: List[reflect.runtime.universe.Type] = List(java.lang.Object, A[String])
scala> typeOf[B[String]].parents contains typeOf[A[String]]
res1: Boolean = true
を:
scala> trait D; trait E extends A[D]
defined trait D
defined trait E
scala> typeOf[E].parents
res2: List[reflect.runtime.universe.Type] = List(java.lang.Object, A[D])
scala> typeOf[E].parents contains typeOf[A[D]]
res3: Boolean = true
ここには驚き:私はタイプの両親のために頼むと正確に何を得ることができます私が期待する。私はこれが偽である可能性がどのように理解していない
scala> trait F extends A[String]
defined trait F
scala> typeOf[F].parents
res4: List[reflect.runtime.universe.Type] = List(java.lang.Object, A[String])
scala> typeOf[F].parents contains typeOf[A[String]]
res5: Boolean = false
:今、私は基本的に上記の2つの例を兼ね備えています。 F
がA[Seq[D]]
,A[Int]
などになると同じことが起こります。この動作が意味をなさない一般化は何ですか?
2.10.0-M5で修正されていることが確認されました。 –