Đọc và ghi trạng thái
Thuộc phần Nền tảng cơ bản trong hành trình Solidity của Coddy. Bài học 27 trên 53.
Một hàm view có thể đọc trạng thái của hợp đồng nhưng không thể thay đổi trạng thái đó. Hàm ghi vào trạng thái không thể được đánh dấu là view hoặc pure. Hãy tách hàm lấy giá trị để đọc giá trị khỏi hàm đặt giá trị để thay đổi giá trị, giúp mục đích của mỗi hàm rõ ràng.
Khai báo phần này ở phạm vi hợp đồng:
uint256 stored;
function setValue(uint256 n) internal {
stored = n;
}
function readValue() internal view returns (uint256) {
return stored;
}Dùng phần này bên trong hàm main đã cho:
setValue(18);
console.log(readValue());setValue ghi vào biến được lưu dùng chung. readValue là view vì hàm này trả về biến đó mà không thay đổi biến. main cũng ghi gián tiếp bằng cách gọi setValue, nên phần khai báo hàm không có từ khóa bổ nghĩa view hoặc pure.
Không thể đánh dấu hàm (function) ghi vào trạng thái của hợp đồng là view.
Thử thách
DễKhai báo trạng thái level, hàm đặt giá trị setLevel và hàm đọc trạng thái getLevel. Hàm main phải đặt level thành nextLevel được cung cấp, rồi in ra kết quả của hàm đọc trạng thái.
Các bài kiểm tra truyền đối số cho main theo thứ tự này: uint256 nextLevel. 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 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 nextLevel) 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
6Trạng thái hợp đồng
Biến trạng tháiĐọc và ghi trạng tháiHàm đọc trạng thái công khaiHằng sốBộ đếm dùng chungTự luyện tập: Playground Solidity