Enum
WEB3DEV Team
# Enum
Solidity suporta enumeráveis e eles são úteis para escolha do modelo e mantêm o controle do estado.
Enum podem ser declarados fora do contrato.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract Enum {
// Enum representando status de envio
enum Status {
Pendente,
Enviado,
Aceitaram,
Rejeitado,
Cancelado
}
// Valor padrao e o primeiro elemento listado na
// definicao do tipo, nesse caso \"Pendente\"
Status public status;
// Retorna uint
// Pendente - 0
// Enviado - 1
// Aceito - 2
// Recusado - 3
// Cancelado - 4
function get() public view returns (Status) {
return status;
}
// Atualiza status passando uint como parametro
function set(Status _status) public {
status = _status;
}
// Voce pode atualizar para um enum especifico
function cancel() public {
status = Status.Cancelado;
}
// delete reinicia o enum para seu primeiro valor, 0
function reset() public {
delete status;
}
}
# Declarando e Importando Enum
Arquivo no qual o enum
é declarado
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
// É salvo como 'EnumDeclaration.sol'
enum Status {
Pendente,
Enviado,
Aceitaram,
Rejeitado,
Cancelado
}
Arquivo que importa o enum
acima
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "./EnumDeclaration.sol";
contract Enum {
Status public status;
}