Ánh xạ
Thuộc phần Nền tảng cơ bản trong hành trình Solidity của Coddy. Bài học 42 trên 53.
Ánh xạ liên kết các khóa với giá trị trong vùng lưu trữ. Khai báo mapping(keyType => valueType) ở phạm vi hợp đồng và dùng dấu ngoặc vuông để đọc hoặc ghi một khóa. Khóa chưa được ghi sẽ cho giá trị mặc định của kiểu dữ liệu giá trị, chẳng hạn như số không đối với uint256.
Khai báo ở phạm vi hợp đồng:
mapping(uint256 => uint256) points;Dùng trong hàm main đã cho:
points[4] = 18;
console.log(points[4]);
console.log(points[5]);Bài tập chỉ thay đổi khóa thứ tư. Khóa thứ năm chưa từng được gán và có giá trị đọc là số không. Ánh xạ không cung cấp độ dài hay danh sách tích hợp sẵn gồm các khóa của nó; nếu ứng dụng cần lặp qua các khóa, hãy theo dõi chúng riêng.
Khóa chưa được ghi trong ánh xạ sẽ có giá trị đọc là giá trị mặc định của kiểu dữ liệu tương ứng.
Thử thách
DễKhai báo một mapping từ khóa uint256 sang giá trị uint256 có tên scores. Gán points cho khóa player, sau đó in ra scores[player] và scores[player + 1].
Các test truyền đối số cho main theo thứ tự này: uint256 player, uint256 points. Mỗi test bắt đầu với trạng thái hợp đồng mới.
Dùng console.log để in ra kết quả đượ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(uint256 player, uint256 points) external {
// 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