【发布时间】:2017-10-03 23:33:45
【问题描述】:
我有一个抽象类,其方法接收 HList 作为参数 (A)。 但是在子类中,我想限制这个 HList (B)
的确切类型下面的代码不起作用(它没有将(Int :: String :: HNil) 视为HList 的子类。但是如何实现类似的效果呢?
import shapeless.{::, HList, HNil}
import shapeless.syntax.std.tuple._
abstract class A{
def test[H <: HList](h: H): String
}
class B extends A {
override def test(h: (Int :: String :: HNil)): String = {
val a = h(0)
val b = h(1)
s"$a -- $b"
}
}
new B().test(25 :: "testje" :: HNil)
【问题讨论】: