Scala 密封案例对象层次结构的实例集
假设我有以下几点:Scala 密封案例对象层次结构的实例集,scala,shapeless,scala-cats,Scala,Shapeless,Scala Cats,假设我有以下几点: sealed trait MyEnum object MyEnum { case object Value1 extends MyEnum case object Value2 extends MyEnum ... } 我可以很容易地编写一个宏(使用knownDirectSubclass编写几行代码)来给我case对象的Set[MyEnum] 我相信这一定已经解决了-也许在无形状或猫中有什么东西可以让我不必写宏就可以得到这一集有吗?这可以通过以下方式完成: i
sealed trait MyEnum
object MyEnum {
case object Value1 extends MyEnum
case object Value2 extends MyEnum
...
}
我可以很容易地编写一个宏(使用knownDirectSubclass
编写几行代码)来给我case对象的Set[MyEnum]
我相信这一定已经解决了-也许在无形状或猫中有什么东西可以让我不必写宏就可以得到这一集有吗?这可以通过以下方式完成:
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
}
}