¿Cómo puedo get Kotlin enumerar los mismos comportamientos que los cpp

Me gustaría get el mismo comportamiento que cpp:

enum dxgi_format_gli { DXGI_FORMAT_R64_UINT_GLI = 1, DXGI_FORMAT_R64_SINT_GLI } 

donde DXGI_FORMAT_R64_UINT_GLI obtiene 1 y el siguiente obtiene 2

lo más cercano que tengo es:

 private var counter: Int = 2; enum class dxgi_format_gli(i: Int = counter++) { DXGI_FORMAT_R64_UINT_GLI(1), DXGI_FORMAT_R64_SINT_GLI() } 

Sin embargo, me gustaría, por supuesto, ser dynamic, es decir, cada vez que llamo al constructor con un parámetro, guardo ese en el counter y todos los siguientes constructores lo incrementan y lo obtienen.

Ya lo hice en java:

 public enum Dxgi_format_gli { DXGI_FORMAT_R64_UINT_GLI(1), DXGI_FORMAT_R64_SINT_GLI; public final int value; private static class Counter { private static short value = 0; } private Dxgi_format_gli() { value = Counter.value; Counter.value++; } private Dxgi_format_gli(int value) { this.value = value; Counter.value++; } } 

Pero no lo hice usando Kotlin …

Creo que solo necesita establecer el valor y mover el incremento para que funcione, por lo que el contador inicial y el valor son los mismos.

 enum class Dxgi_format_gli { DXGI_FORMAT_R64_UINT_GLI(1), DXGI_FORMAT_R64_SINT_GLI; val value: Int private object Counter { var value: Int = 0 } constructor() { Counter.value++ value = Counter.value.toInt() } private constructor(value: Int) { this.value = value Counter.value = value } } 

Cada enum ya tiene un ordinal propiedad generado automáticamente:

 enum class A {a, b, c} Aaordinal // 0 Abordinal // 1 Acordinal // 2 

Así que, técnicamente, la forma más fácil de get lo que quieres es dxgi_format_gli.DXGI_FORMAT_R64_UINT_GLI.ordinal + 1 (no tengo idea de por qué no quieres comenzar con 0 0_o)

Puede replace el código en la respuesta de @ griffio con esto:

 enum class Dxgi_format_gli { DXGI_FORMAT_R64_UINT_GLI, DXGI_FORMAT_R64_SINT_GLI; val value = ordinal + 1 } 
  • Scala require () equivalente en Kotlin
  • Omitir si está vacío en el complemento Kotlin Maven
  • Kotlin - MainActivity extiende AppCompatActivity, function onRequestPermissionsResult no encontrada y no puede ser anulada
  • Intentando ejecutar el guión de Kotlin en IntelliJ IDEA
  • ¿Los methods de extensión y las properties de extensión son malas prácticas?
  • ¿Cómo puedo ejecutar files Kotlin-Script (.kts) desde Kotlin / Java?
  • señal 7 (SIGBUS), código 2 (BUS_ADRERR)
  • Maneras de ofuscar el acceso a miembros de la class preferentemente privados, pero en realidad públicos, con el fin de utilizarlos en methods en línea
  • Kotlin: matriz de generics
  • ¿Hay alguna forma de desactivar la covarianza del sitio de uso en Kotlin?
  • Objetos de generación Kotlin Jackson de JSON