Menu
CoddyTech

Kiểu liệt kê

Thuộc phần Nền tảng cơ bản trong hành trình Solidity của Coddy. Bài học 44 trên 53.

Enum định nghĩa một tập hợp nhỏ các lựa chọn có tên. Khai báo các thành viên theo thứ tự, sau đó tham chiếu đến một thành viên theo dạng TypeName.MemberName. Thành viên đầu tiên có giá trị số bằng không, thành viên tiếp theo có giá trị bằng một, cứ thế tiếp tục. Các lựa chọn có tên giúp bạn dễ đọc trạng thái hơn so với những con số không được giải thích.

Khai báo enum này ở phạm vi hợp đồng:

enum Phase { Waiting, Packing, Complete }

Dùng enum này bên trong hàm main được cung cấp:

Phase phase = Phase.Packing;
console.log(uint256(phase));

Khai báo liệt kê Waiting, Packing và Complete. Packing là thành viên thứ hai nên chuyển đổi thành một. Việc chuyển một số bất kỳ thành enum có thể thất bại nếu số đó nằm ngoài phạm vi đã định nghĩa, vì vậy hãy dùng các thành viên có tên ở đây.

Các thành viên enum có giá trị số bắt đầu từ 0 theo thứ tự khai báo.

challenge icon

Thử thách

Dễ

Khai báo enum Mode với Idle, Running và Finished theo thứ tự đó. Chọn Running khi active là true, nếu không thì chọn Idle, rồi in giá trị dạng số.

Test truyền các đối số cho main theo thứ tự này: bool active. Mỗi test bắt đầu với trạng thái hợp đồng mới.

Dùng console.log cho đầu ra được yêu cầu. Chỉ in các giá trị được yêu cầu, mỗi giá trị trên một dòng, không thêm nhãn trừ khi đề bài yêu cầu.

Tự làm thử

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
    function main(bool active) external view {
        // Viết lời giải của bạn tại đây.
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Nền tảng cơ bản

Tự luyện tập: Playground Solidity