gpt4 book ai didi

scala - 匹配类型参数的准引用类型是什么?

转载 作者:行者123 更新时间:2023-12-01 08:59:33 25 4
gpt4 key购买 nike

我有一个引号匹配器,其中 q"someMethod[$ts]()"其中 def someMethod[I <: shapeless.HList]()" .

打印 ts给出:

List(shapeless.HNil)

或者,例如

List(String, Int)

然后我尝试分配:

val types: List[scala.reflect.api.Types.Type] = ts

导致编译器错误:

[error] type mismatch;
[error] found : List[_125.u.Tree] where val _125: scala.reflect.api.QuasiquoteCompat.TypeAppliedExtractor{val u: OpTreeContext.this.c.universe.type}
[error] required: List[Context.this.c.universe.Type]

如何撰写List[scala.reflect.api.Types.Type]来自 ts

最佳答案

如您的错误消息所述,ts 是一个树列表。更具体地说,这些将是 type trees ,并且您可以使用 tpe 方法提取它们的类型:

val types: List[scala.reflect.api.Types#Type] = ts.map(_.tpe)

请注意,我使用的是类型投影,因为 Types 既不是包也不是对象,所以 Types.Type 将不起作用。

关于scala - 匹配类型参数的准引用类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com