Enum
WEB3DEV Team
# Enum
Solidity soporta enumerables, estos son útiles para modelos con opciones y mantiene un seguimiento del estado.
Enums pueden ser declarados afuera del contrato.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
contract Enum {
// Enum representando el status de envío
enum Status {
Pending,
Shipped,
Accepted,
Rejected,
Canceled
}
// El valor por defecto es el primer elemento listado en
// la definición del tipo, en este caso "Pending"
Status public status;
// Devuelve uint
// Pending - 0
// Shipped - 1
// Accepted - 2
// Rejected - 3
// Canceled - 4
function get() public view returns (Status) {
return status;
}
// Actualiza el status pasando uint como entrada
function set(Status _status) public {
status = _status;
}
// Puede actualizar a un enum específico así
function cancel() public {
status = Status.Canceled;
}
// delete reinicia el enum a su primer valor, 0
function reset() public {
delete status;
}
}
# Declarando e Importando Enum
Archivo donde el enum está declarado
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
// Está guardado como 'EnumDeclaration.sol'
enum Status {
Pending,
Shipped,
Accepted,
Rejected,
Canceled
}
Archivo que importa el enum de arriba
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
import "./EnumDeclaration.sol";
contract Enum {
Status public status;
}