Odczyt i zapis stanu
Część sekcji Podstawy ścieżki Solidity w Coddy. Lekcja 27 z 53.
Funkcja view może odczytywać stan kontraktu, ale nie może go zmieniać. Funkcja, która zapisuje stan, nie może być oznaczona jako view ani pure. Oddziel funkcję pobierającą, która odczytuje wartość, od funkcji ustawiającej, która ją zmienia, aby cel każdej funkcji był jasny.
Zadeklaruj to w zakresie kontraktu:
uint256 stored;
function setValue(uint256 n) internal {
stored = n;
}
function readValue() internal view returns (uint256) {
return stored;
}Użyj tego wewnątrz udostępnionej funkcji main:
setValue(18);
console.log(readValue());setValue zapisuje współdzieloną zmienną przechowywaną. readValue ma modyfikator view, ponieważ zwraca tę zmienną bez jej zmieniania. main również zapisuje pośrednio, wywołując setValue, dlatego w jego nagłówku nie ma modyfikatora view ani pure.
Funkcji zapisującej stan kontraktu nie można oznaczyć modyfikatorem view.
Wyzwanie
ŁatwyZadeklaruj stan level, funkcję ustawiającą setLevel oraz funkcję odczytującą getLevel. Funkcja main musi ustawić level na przekazany nextLevel, a następnie wypisać wynik funkcji odczytującej.
Testy przekazują argumenty do main w tej kolejności: uint256 nextLevel. Każdy test rozpoczyna się ze świeżym stanem kontraktu.
Użyj console.log do wyświetlenia żądanego wyniku. Wypisz tylko żądane wartości, po jednej w wierszu, bez dodatkowych etykiet, chyba że zadanie ich wymaga.
Spróbuj swoich sił
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 nextLevel) external {
// Wpisz tutaj swoje rozwiązanie.
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
2Zmienne i typy
Liczby całkowite bez znakuWejście i wyjścieLiczby całkowite ze znakiemWartości logiczneŁańcuchy znaków w pamięciKarta profilu5Funkcje
Parametry funkcjiZwracanie wartościFunkcje czysteWywołania pomocniczeWielokrotnego użytku obliczeniaPoćwicz samodzielnie: Edytor online Solidity