Scala 无形状HList参数覆盖
我有一个抽象类,其方法接收HList作为参数(a)。 但是在子类中,我想限制这个HList的确切类型(B) 下面的代码不起作用(它没有将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
(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时,这也可以正常工作