获取Scala中的所有枚举案例对象值
发布时间:2020-12-16 18:36:18 所属栏目:安全 来源:网络整理
导读:在 Scala中,枚举是一个有争议的领域,许多人(包括我自己)比使用任何基于库的枚举更多地使用案例对象.这很好,除了那个没有得到所有可能值的列表,有时需要它.我手动维护了这些列表(allKeys),但这很乏味且容易出错. 问题是:如何使用Scala 2.11 TypeTags或反射来
在
Scala中,枚举是一个有争议的领域,许多人(包括我自己)比使用任何基于库的枚举更多地使用案例对象.这很好,除了那个没有得到所有可能值的列表,有时需要它.我手动维护了这些列表(allKeys),但这很乏味且容易出错.
问题是:如何使用Scala 2.11 TypeTags或反射来创建这样的列表? 两种方法之一可行: >获取密封类的所有派生实例 注意:有samples似乎承诺我正在寻找什么.但这太过分了 – 必须有一个几乎一个班轮才能得到相同的东西? 以下是对此的测试.我怎么能实现allOf功能? class ManifestToolsTest extends UnitTest { behavior of "ManifestTools" { sealed class MyEnum object MyEnum { case object A extends MyEnum case object B extends MyEnum case object C extends MyEnum val x= 10 // should not be listed def f(x: Int) = x // should not be listed } def allOf[T]: Seq[T] = { ... } it should "be able to list the 'case object' members of an object" in { val tmp: Seq[MyEnum] = allOf[MyEnum] tmp should contain theSameElementsAs( List(MyEnum.A,MyEnum.B,MyEnum.C) ) } } } 我试图从Scala文档中获取这些信息,但是当涉及到反射时,事情真的很抽象.我相信上述需求(应该)由Scala 2.11涵盖. 参考文献: > Case objects vs Enumerations in Scala 解决方法
我找到了
cure,名为Enumeratum,但我认为无论如何我都会发布这个问题,以便人们更容易找到这件新的宏观珠宝.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |