Enum - Enumeradores

porMatheusem11/05/2022

Nesse artigo iremos abordar o funcionamento do enum no Solidity.

Enum (Enumerador)

O Solidity suporta os enumeradores e eles são muito úteis para modelar a escolha e acompanhar o estado do seu contrato inteligente.

Enums podem ser declarados fora de um contrato e acessados globalmente.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Enum {
// Enum representando o status do envio
enum Status {
Pending,
Shipped,
Accepted,
Rejected,
Canceled
}
// O valor padrão é o primeiro elemento listado na
// definição do tipo, neste caso "Pending"
Status public status;
// Retorna uint
// Pending - 0
// Shipped - 1
// Accepted - 2
// Rejected - 3
// Canceled - 4
function get() public view returns (Status) {
return status;
}
// Atualize o status passando uint na entrada
function set(Status _status) public {
status = _status;
}
// Você pode atualizar para um enum específico como este
function cancel() public {
status = Status.Canceled;
}
// delete - redefine o enum para seu primeiro valor, 0
function reset() public {
delete status;
}
}

Declarando e importando Enum

Arquivo em que o enum é declarado

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
// Nosso enum foi salvo com nome de 'EnumStatus.sol'
enum Status {
Pending,
Shipped,
Accepted,
Rejected,
Canceled
}

Para importarmos o enum, precisamos fazer o import do arquivo que salvamos anteriormente

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import "./EnumStatus.sol";
contract Enum {
Status public status;
}

Testar no Remix