में समानता टाइप करें मैं Scala 2.10.0 Milestone 4 में प्रतिबिंब के साथ एक अजीब समस्या में भाग रहा हूं कि मैं अपने सिर को चारों ओर लपेट नहीं सकता। सामान कि जिस तरह से काम करता है के लिए सबसे पहले मैं उम्मीद थी:स्कैला 2.10 प्रतिबिंब एपीआई
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
मुझे समझ में नहीं आता कि यह कैसे गलत हो सकता है। वही बात होती है यदि मेरे पास F
A[Seq[D]]
, A[Int]
इत्यादि का विस्तार करें। आदि सामान्यीकरण क्या है जो मुझे याद आ रहा है जिससे यह व्यवहार समझ में आता है?
मैंने अभी पुष्टि की है कि यह 2.10.0-एम 5 में तय है। –