Comments (3)
Hi there,
There's nothing automatic that will do it for you sadly; the macro literally only searches the body it's in at the level that it's in (doesn't search deeper). This is what I think could work, but I understand it might not appeal to you because of the manual concatenation:
(Please excuse the use of Ammonite)
@ import $ivy.`com.beachape::enumeratum:1.5.7`, enumeratum._
import $ivy.$ , enumeratum._
@ {
sealed trait BaseGroup extends EnumEntry
object BaseGroup extends Enum[BaseGroup] {
// Manually concatenate
val values = findValues ++ GroupA.values
case object metricA extends BaseGroup
case object metricB extends BaseGroup
case object metricC extends BaseGroup
}
sealed trait GroupA extends BaseGroup
object GroupA extends Enum[GroupA] {
val values = findValues
case object metricD extends GroupA
case object metricE extends GroupA
}
}
@ BaseGroup.values
res2: collection.immutable.IndexedSeq[BaseGroup] = Vector(metricA, metricB, metricC, metricD, metricE)
from enumeratum.
The idea was actually the other way round, that there would be a GroupA, GroupB, etc that would all get the common metrics from the BaseGroup, and not that BaseGroup would have them all. But either way, yeah, was hoping that something better would be possible. Anyway, thanks for your input.
from enumeratum.
I see. I can kind of see what you're trying to do, but that doesn't make much sense from a type-perspective; you would end up having values
in the enum "subtypes" that have a less precise type of IndexedSeq[BaseGroup]
as opposed to the more precise type (e.g. IndexedSeq[GroupA]
, IndexedSeq[GroupB]
). This arguably ends up making code less safe..
Given this type-level dilemma, it might be that enums aren't the right tool to solve the problem you have :)
from enumeratum.
Related Issues (20)
- [Scala 2] Compile-time stackoverflow with lots of enum values HOT 3
- Version 1.7.2 is not binary compatible with previous versions HOT 2
- Conflict with Scala 3 enums HOT 5
- Breaking compatibility should trigger a major version update HOT 2
- .
- enumeratum-json4s not available for Scala3? HOT 7
- Scala3: findValues fails to compile in nested sealed trait hierarchy HOT 1
- Scala 3: findValues fails to find entries extending types with type parameters HOT 1
- How to upgrade enumeratum-doobie to target v1.0.0-RC4 HOT 3
- Un-sealed abstract class in hierarchy gets ignored on Scala 3.x HOT 1
- Support play-json 3.0.x
- Members of enums nested in a class are not discovered in scala 3 HOT 1
- Derived `CirceEnum` codecs fail roundtrip on `case class` values HOT 4
- Enumeratum-Play 1.8.0 with Play 3 and Pekko cannot find play.api.libs.json.KeyReads at runtime HOT 2
- Override a single entry with custom name HOT 4
- ScalaDoc warnings in any code using the library
- Circe: Allow to decode enumerations more relaxed HOT 3
- Scala 3 ValueEnum only finds values if the value constructor parameter is first HOT 5
- Doobie 1.0.0-rc5 required HOT 1
- Scala Native 0.5 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from enumeratum.