¿Cómo devolver el valor de índice de un Enum?

Estoy tratando de construir un contrato simple de doble depósito en garantía. Tengo una enumeración para el estado:

enum State { Created, Locked, Inactive }
State public state;

Cuando trato de interactuar con el contrato a través de la consola de trufas, puedo obtener el tipo de enumeración para devolver:

ingrese la descripción de la imagen aquí

pero no entiendo cómo hacer comparaciones con el valor devuelto. ¿Alguien puede decirme cómo comparar el valor devuelto?

Respuestas (1)

Es un BigNumber: https://github.com/ethereum/wiki/wiki/JavaScript-API#a-note-on-big-numbers-in-web3js

Prueba esto para hacerte una idea:

> var stateReadable = state.toString(10);
> stateReadable

Espero eso ayude.

Actualización... esto será un poco difícil porque es una imagen y no un código con el que puedo jugar. Estás devolviendo una promesa con esta parte. return instance.state(). Ahora, tienes que hacer algo con esa promesa.

var state =es un error, porque no quieres que sea una promesa.

Voy a desglosarlo un poco para mejorar la legibilidad y la ilustración.

Intentar:

> var state;
> var contract;
> Escrow.deployed().then(function(instance) { contract = instance; });
> contract.state().then(function(value) { state = value) });
> state.toString(10);

Como algo con guión, probablemente los encadenaría para que las cosas no avancen demasiado rápido. Espere la instancia, luego consulte la función.

var state;
var escrow; // more conventional naming
Escrow.deployed()
.then(function(instance) { 
   escrow = instance; 
   return escrow.state(); // this way we know it won't get called until the instance returns
})
.then(function(response) { // now we do something with the promise we returned.
   state = response;
   console.log(state.toString(10);
});

¿Ves cómo las promesas empiezan a formar una cadena? Puede seguir devolviendo promesas, luego cerrar el bloque y agregarlo .then(...para pasar los resultados al siguiente paso. En otras palabras, si necesita otra interacción con el contrato después de my console.log(), haría returnla función y luego continuaría });con otro .then().

Solo siguiendo el sonido aquí, así que espero no haber fallado en la sintaxis.

Espero eso ayude.

Gracias por la respuesta, pero en lugar de devolver un int, devuelve una promesa.
Veo a que te refieres. Actualizando
¡Vaya, muchas gracias! La explicación también ayuda mucho.