Mảng trong bộ nhớ động
Thuộc phần Nền tảng cơ bản trong hành trình Solidity của Coddy. Bài học 37 trên 53.
Dùng new uint256[](length) để cấp phát một mảng trong bộ nhớ với độ dài được chọn khi chạy. Các phần tử của mảng bắt đầu bằng 0. Dù kiểu dữ liệu dùng dấu ngoặc vuông rỗng, bạn không thể thay đổi kích thước mảng trong bộ nhớ đã cấp phát bằng push hoặc pop.
Các câu lệnh trong đoạn trích này chạy bên trong hàm main đã cho.
uint256[] memory values = new uint256[](3);
values[1] = 19;
console.log(values.length);
console.log(values[0]);Mảng có ba vị trí và chỉ vị trí ở giữa được gán giá trị. Phần tử đầu tiên vẫn bằng không. Thuộc tính length cho biết có bao nhiêu phần tử, chứ không phải giá trị của phần tử cuối cùng.
Mảng bộ nhớ uint256 mới được cấp phát bắt đầu với các phần tử có giá trị bằng không.
Thử thách
DễCấp phát một mảng trong bộ nhớ có độ dài n, đặt phần tử cuối cùng của mảng thành marker, sau đó in ra độ dài và phần tử cuối cùng. n nằm trong khoảng từ 1 đến 8.
Các bài kiểm tra truyền đối số cho main theo thứ tự này: uint256 n, uint256 marker. 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 cho đầu ra được yêu cầu. Chỉ in ra 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(uint256 n, uint256 marker) external view {
// Viết lời giải của bạn ở đây.
}
}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