Enum

# Enum

Solidity suporta enumeráveis e eles são úteis para escolha do modelo e mantêm o controle do estado.

Enums podem ser declarados fora do contrato.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;

contract Enum {
    // Enum representando status de envio
    enum Status {
        Pending,
        Shipped,
        Accepted,
        Rejected,
        Canceled
    }

    // Valor padrão é o primeiro elemento listado na 
    // definição 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 para input
    function set(Status _status) public {
        status = _status;
    }

    // Você pode atualizar para um enum específico como este
    function cancel() public {
        status = Status.Canceled;
    }

    // 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.3;
// É salvo como 'EnumDeclaration.sol'

enum Status {
    Pending,
    Shipped,
    Accepted,
    Rejected,
    Canceled
}

Arquivo que importa o enum acima

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;

import "./EnumDeclaration.sol";

contract Enum {
    Status public status;
}
Last Updated: 07/10/2022 21:58:58