दिए गए क्लासटैग कैसे बनाते हैं, मैं एक फ़ंक्शन को परिभाषित करना चाहता हूं जो एक ऐरे देता है, और मेरे पास टाइपटाग है। क्या मैं आवश्यक क्लासटैग उत्पन्न कर सकता हूं?स्कैला 2.10 में, आप टाइपटाग
scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._
scala> def fun[X: TypeTag]: Array[X] = Array.ofDim[X](10)
<console>:11: error: No ClassTag available for X
def fun[X: TypeTag]: Array[X] = Array.ofDim[X](10)
या यह आवश्यक ClassTag की अंतर्निहित प्रमाण उपलब्ध कराने के लिए है:
scala> import reflect.ClassTag
import reflect.ClassTag
scala> def fun[X: ClassTag: TypeTag]: Array[X] = Array.ofDim[X](10)(implicitly[ClassTag[X]])
fun: [X](implicit evidence$1: scala.reflect.ClassTag[X], implicit evidence$2: reflect.runtime.universe.TypeTag[X])Array[X]
मैं इसे सरल एक TypeTag से एक ClassTag उत्पन्न करने के लिए सोचा होगा, लेकिन मैं कोई स्पष्ट रास्ता देखते हैं।
def fun[X:TypeTag]: Array[X] = {
val mirror = runtimeMirror(getClass.getClassLoader)
implicit val xClassTag = ClassTag[X](mirror.runtimeClass(typeTag[X].tpe))
Array.ofDim[X](10)
}
आप सुनिश्चित करने के लिए हालांकि कि तुम सच में पहली जगह में एक TypeTag
पास करनी होगी चाहता हूँ:
संभावित डुप्लिकेट [क्लासटाग फॉर्म टाइपटाग कैसे प्राप्त करें, या दोनों एक ही समय में?] (Http://stackoverflow.com/questions/18729321/how-to-get-classtag-form-typetag-or-both- एक ही समय में) – Suma