Menu
CoddyTech

Mảng lưu trữ

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

Một mảng động được khai báo trong phạm vi hợp đồng sẽ nằm trong bộ nhớ lưu trữ. Dùng push(value) để thêm một phần tử và pop() để xóa phần tử cuối cùng. Gọi pop khi mảng rỗng sẽ khiến giao dịch bị hoàn tác. Độ dài của mảng thay đổi khi bạn thêm hoặc xóa giá trị.

Khai báo biến này trong phạm vi hợp đồng:

uint256[] values;

Dùng biến này bên trong hàm main đã cho:

values.push(6);
values.push(15);
values.pop();
console.log(values.length);
console.log(values[0]);

Mảng bắt đầu rỗng trong test case này. Hai lần gọi push tạo ra hai phần tử, còn pop xóa phần tử thứ hai. Phần tử đầu tiên vẫn là sáu. Việc cập nhật mảng storage làm thay đổi trạng thái hợp đồng, vì vậy main không thể là view.

push và pop thay đổi mảng storage động ở cuối mảng.

challenge icon

Thử thách

Dễ

Khai báo một mảng lưu trữ động kiểu uint256 có tên values. Thêm a, b và c vào mảng, xóa phần tử cuối cùng, sau đó in độ dài và giá trị cuối cùng còn lại.

Các bài kiểm tra truyền đối số cho main theo thứ tự này: uint256 a, uint256 b, uint256 c. Mỗi bài kiểm tra bắt đầu với trạng thái hợp đồng mới.

Dùng console.log để in đầ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 kèm nhãn bổ sung 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(uint256 a, uint256 b, uint256 c) external  {
        // Viết lời giải của bạn ở đâ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