Scala 无形状HList参数覆盖

Scala 无形状HList参数覆盖,scala,shapeless,hlist,Scala,Shapeless,Hlist,我有一个抽象类,其方法接收HList作为参数(a)。 但是在子类中,我想限制这个HList的确切类型(B) 下面的代码不起作用(它没有将(Int::String::HNil)视为HList的子类。但是如何实现类似的效果呢 导入无形状。{::,HList,HNil} 导入shapless.syntax.std.tuple_ 抽象A类{ def test[H即使没有HLists,您也无法在Scala中按原样执行此操作。想象一下尝试执行更简单的操作 trait Foo trait Bar extend

我有一个抽象类,其方法接收HList作为参数(a)。 但是在子类中,我想限制这个HList的确切类型(B

下面的代码不起作用(它没有将
(Int::String::HNil)
视为
HList
的子类。但是如何实现类似的效果呢

导入无形状。{::,HList,HNil}
导入shapless.syntax.std.tuple_
抽象A类{

def test[H即使没有HLists,您也无法在Scala中按原样执行此操作。想象一下尝试执行更简单的操作

trait Foo
trait Bar extends Foo

abstract class A {
  def test[T <: Foo](t: T): String
}

class B extends A {
  override def test(b: Bar): String = //...
}

这在使用HLists时也可以很好地工作。

即使没有HLists,在Scala中也无法做到这一点。想象一下尝试做一些更简单的事情

trait Foo
trait Bar extends Foo

abstract class A {
  def test[T <: Foo](t: T): String
}

class B extends A {
  override def test(b: Bar): String = //...
}
在使用HLists时,这也可以正常工作