假设我有容器标记
case class TypedString[T](value: String)
wherevalue
代表特定类型的一些 id T
。
我有两节课
case class User(id: String)
case class Event(id: String)
我有一个功能可以做一些事情:
def func[L <: HList](l: L)(...) {...}
所以我可以像使用它一样
func[TypedString[User] :: TypedString[Event] :: HNil](
TypedString[User]("user id") :: TypedString[Event]("event id") :: HNil
)
(对我来说,明确地保留类型签名很重要)
问题是:如何更改或扩展 func 以具有更短的类型签名(仅保留标记类型),例如:
func[User :: Event :: HNil](
TypedString[User]("user id") :: TypedString[Event]("event id") :: HNil
)