Множество экземпляров закрытого корпуса - PullRequest
0 голосов
/ 02 мая 2018

Представьте, что у меня есть следующее:

sealed trait MyEnum

object MyEnum {
  case object Value1 extends MyEnum
  case object Value2 extends MyEnum
  ...
}

Я мог бы довольно легко написать макрос (несколько строк кода с использованием knownDirectSubclasses), чтобы получить Set[MyEnum] из case object s.

Я уверен, что это должно быть уже решено - возможно, есть что-то в Бесформенном или Кошках , которое даст мне этот набор без необходимости писать макрос? - Есть?

1 Ответ

0 голосов
/ 02 мая 2018

Это можно сделать с помощью 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
  }
}
...