¿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 } 
  • ObjectAnimator.ofFloat no puede tomar Int como parameters directamente en kotlin
  • Complemento de Jacoco Jenkins con Kotlin
  • ¿Cómo corregir la ambigüedad de resolución de sobrecarga en Kotlin (sin lambda)?
  • Kotlin list a EnumMap con sums
  • ¿Lee el valor de la anotación de la function de Kotlin usando la reflexión?
  • Android + Kotlin: el proyecto ya no se construye
  • ¿Por qué mi editor deslizante no funciona en la cuadrícula Vaadin 8?
  • Error de compilation en Eclipse en el proyecto Kotlin + Java, pero el proyecto se comstack con Maven
  • ¿Pasar lambdas a Observable.subscribe en kotlin dará como resultado pérdidas de memory?
  • La aplicación Kotlin no muestra mi matriz json
  • Android BroadcastReceiver onReceived nunca se llamó en el dispositivo Android 7