【问题标题】:Set of instances of sealed case object hierachy密封案例对象层次结构的实例集
【发布时间】:2018-05-02 07:26:44
【问题描述】:
想象一下我有以下几点:
sealed trait MyEnum
object MyEnum {
case object Value1 extends MyEnum
case object Value2 extends MyEnum
...
}
我可以相当轻松地编写一个宏(它的几行代码使用knownDirectSubclasses)来给我case objects 中的Set[MyEnum]。
我确定这一定已经解决了 - 也许 Shapeless 或 Cats 中的某些东西可以让我在无需编写宏的情况下得到这个集合? - 有吗?
【问题讨论】:
标签:
scala
shapeless
scala-cats
【解决方案1】:
这可以通过Enumeratum来完成:
import enumeratum._
import scala.collection.immutable
object Test {
def main(args: Array[String]): Unit = {
sealed trait MyEnum extends EnumEntry
object MyEnum extends Enum[MyEnum] {
case object Value1 extends MyEnum
case object Value2 extends MyEnum
override def values: immutable.IndexedSeq[MyEnum] = findValues
}
val res: Set[MyEnum] = MyEnum.values.toSet
}
}