gpt4 book ai didi

scala - 如何将上下文绑定(bind)的 TypeTags 添加到采用类型参数的类型?

转载 作者:行者123 更新时间:2023-12-02 00:27:19 25 4
gpt4 key购买 nike

给定一个类:

class MyClass[A, B[A] <: SomeClass[A]](...) { ... }

我想为 A 和 B[A] 添加类型标签。

但是,

class MyClass[A: TypeTag, B[A] <: SomeClass[A]: TypeTag]

提示 B 采用类型参数。添加隐式 TypeTag[B[A]] 似乎可行,但我需要它上下文绑定(bind)来进行某些 list 转换。

最佳答案

如果签名中只有 B[A] 而没有 B[OtherClass]B[_]MyClass 您可以使用 B 而不是 B[A]:

class MyClass[A: TypeTag, B <: SomeClass[A]: TypeTag](sc: B, e: A)
new MyClass(new SomeClass[String], "a")
// MyClass[String,SomeClass[String]] = MyClass@790e79dc

这是一个带有 B[A] 的丑陋解决方案,但我想你应该只使用隐式参数:

class MyClass[A: TypeTag,
B[A] <: SomeClass[A]: ({type l[M[_]] = TypeTag[M[A]]})#l ](sc: B[A], e: A)

关于scala - 如何将上下文绑定(bind)的 TypeTags 添加到采用类型参数的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21278625/

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