4
Как я могу проверить, является ли WeakTypeTag
или Type
представляет собой бетонный тип? Это было бы особенно полезно в макросах, где я мог бы использовать его, чтобы поднять ошибку компиляции, когда тип, предоставленный пользователем, не конкретны:Как проверить, является ли WeakTypeTag или Type конкретным типом?
def macroMethod[T]: Unit = macro macroMethod_impl[T]
def macroMethod_impl[T: c.WeakTypeTag](c: Context): c.Expr[Unit] = {
import c.universe._
def isConcrete(tpe: Type) = ???
if(!isConcrete(weakTypeOf[T])) {
c.error(c.enclosingPosition, "You must provide concrete type.")
}
c.literalUnit
}
Что относительно 'List [T]'? Что относительно 'List [T] forSome {type T}'? –