Enum

# 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;
}

# Teste no Remix

Last Updated: 22/01/2024 22:26:13