【发布时间】:2015-04-16 13:27:51
【问题描述】:
假设我有一个coproduct(密封特征),例如
sealed trait Traity
case object Foo extends Traity
case class Bar() extends Traity
case class Baz() extends Traity
使用 shapeless,我可以将多态函数应用于特定实例,但我想做的是将零参数(无实例)多态函数应用于所有产品(即案例类和案例对象)。我不知道语法是什么样的,但在概念上是这样的:
object mypoly extends Poly1 {
implicit def traity[T <: Traity] = when[T]( getClass[T].toString )
}
iterate[Traity](mypoly) // gives List("Foo", "Bar", "Baz")
适合我的目的。
【问题讨论】:
-
我目前无法提供完整的答案,但您可以查看我的问题here,该问题提供了类似问题的解决方案——您只需更改@ 987654325@类型类。
-
@TravisBrown 谢谢!我想这会获取所有实例(
Witness正在抓取它们,对吗?),但我真的只关心类型。也许这意味着我的def coproductX会更简单...... -
实际上,您的问题/答案本身就非常有用!