【发布时间】:2021-02-21 09:26:53
【问题描述】:
我有密码
case class MyTypeTag[T] ()
def getTypeTags[TT <: Product : TypeTag] = {
val subtypesTags: List[MyTypeTag[Option[_]] = ???
sybtypesTags
}
val res = getTypeTags[(Int, String, Boolean)]
// res = MyTypeTag[Option[Int]] :: MyTypeTag[Option[String]] :: MyTypeTag[Option[Boolean]] :: Nil
所以我想调用函数getTypeTags 传递任何元组类型作为类型参数并获取MyTypeTag 实例列表,其中每个类型都包含在Option 中的元组中
如果在 intelliJ 中我评估表达式 typeof[TT] 我看到属性 args 以及我的类型列表,但我不知道如何从代码中访问。或者可以采用其他一些方法。
提前致谢
【问题讨论】:
-
getTypeTags的签名是什么?你想让它返回List[MyTypeTag[Option[_]]吗?那么这与res = MyTypeTag[Option[Int]] :: ... :: Nil相矛盾。列表的所有元素都具有相同的类型。你想要HList而不是List? -
@DmytroMitin,但这取决于我传递的元组类型参数,所以这里只是一个例子,返回类型是 List[MyTypeTag[Option[_]],其中占位符可以是任何东西
-
名单还行,现在不想去乱七八糟的员工了
标签: scala generics reflection scala-reflect