我先使用<代码>izumi.reflect。 Tag 用于对电动进行控制,其作用很大。 除非在某个时候我失去这种信息,否则我不敢肯定如何回头。 在此,我想做的是:
case class Rule[T: Tag](lhs: String, rhs: Repr[T])
这是巨大的。 www.un.org/spanish/ecosoc 了解其中的<代码>rhs的类型。 例外
val rules: List[Rule[?]] = // some list of rules
rules.foreach { r =>
process(r)
}
def process[T: Tag](rule: Rule[T]): Unit = // side-effectful processing
此时此刻,我拿到<代码>,不能为iz蒸而找到含蓄的价值。 Tag[T]。 OK没有大的意外。 该<代码>Tag可回收,因为它与<代码>中所有其他标签混在一起。 名单/编号。 但是,我能否拯救各方,使之在晚些时候回头?
我受审
case class Rule[T: Tag](lhs: String, rhs: Repr[T]):
val LightTypeTag = Tag[T].tag
和在<代码>上的类似方式 达格·哈马舍尔德图书馆
process(r, r.tag)
def process[T: Tag](rule: Rule[T], tag: Tag[T]) = ...
或明确通过<条码>Tag[T] 加入<条码>方法,但我可以说明如何做以下任何工作:
- Save a value of type
Tag[T]
. - Convert a value of type
LightTypeTag
back to aTag[T]
. - Some other combination of explicit saving and using some other values that will make this type check.
任何帮助都得到高度赞赏。