Enum

# 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;
}
Last Updated: 7/10/2022, 21:58:58