【问题标题】: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]

我确定这一定已经解决了 - 也许 ShapelessCats 中的某些东西可以让我在无需编写宏的情况下得到这个集合? - 有吗?

【问题讨论】:

    标签: 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
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 2011-05-06
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      相关资源
      最近更新 更多