给定一个类:
class MyClass[A, B[A] <: SomeClass[A]](...) { ... }
我想为A和B[A]添加类型标签。
不过,
class MyClass[A: TypeTag, B[A] <: SomeClass[A]: TypeTag]
抱怨 B 类型参数的问题。添加一个隐式的 TypeTag[B[A]] 看来可以解决问题,但我需要它作为某些显式类型转换的上下文绑定。
给定一个类:
class MyClass[A, B[A] <: SomeClass[A]](...) { ... }
我想为A和B[A]添加类型标签。
不过,
class MyClass[A: TypeTag, B[A] <: SomeClass[A]: TypeTag]
抱怨 B 类型参数的问题。添加一个隐式的 TypeTag[B[A]] 看来可以解决问题,但我需要它作为某些显式类型转换的上下文绑定。
如果类MyClass
的签名中只有B[A]
,没有B[OtherClass]
或B[_]
,则可以使用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)