enum Status {
        Pending,  // 待辦
        Shipped,  // 已發貨
        Accepted, // 接受
        Rejected, // 被拒絕
        Canceled  // 取消
    }
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

contract EnumExample {

    enum Status {
        Pending,  // 待辦
        Shipped,  // 已發貨
        Accepted, // 接受
        Rejected, // 被拒絕
        Canceled  // 取消
    }

    Status public status;
		// 目前狀態
    function get() public view returns(Status){
        return status;
    }
		// 設定狀態
    function set(Status _status) public returns(Status){
        return status = _status;
    }
		// 設定取消
    function canceled() public {
        status = Status.Canceled;
    }
		// 重新設定
    function rest() public {
        delete status;
    }
}

但通常這樣的狀態管理都會把他整理起來(看了也舒服)

截圖 2022-03-18 上午7.38.24.png

2.我們把Status 整理到 5_1_EnumDeclaration.sol

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

enum Status {
    Pending,  // 待辦
    Shipped,  // 已發貨
    Accepted, // 接受
    Rejected, // 被拒絕
    Canceled  // 取消
}

3.我們開啟 5_1_EnumImportExample.sol,引入 5_1_EnumDeclaration

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

import "./5_1_EnumDeclaration.sol";

contract EnumImportExample {

    Status public status;

    function get() public view returns(Status){
        return status;
    }

    function set(Status _status) public returns(Status){
        return status = _status;
    }

    function canceled() public {
        status = Status.Canceled;
    }

    function rest() public {
        delete status;
    }
}

使用沒問題 🥳

8.Modifer

有任何問題可反饋: [email protected]