Чтение и запись состояния
Часть раздела Основы путешествия по Solidity на Coddy. Урок 27 из 53.
Функция view может читать состояние контракта, но не может изменять его. Функцию, которая записывает состояние, нельзя помечать как view или pure. Отделяй геттер, который читает значение, от сеттера, который его изменяет, чтобы назначение каждой функции было понятным.
Объяви это на уровне контракта:
uint256 stored;
function setValue(uint256 n) internal {
stored = n;
}
function readValue() internal view returns (uint256) {
return stored;
}Используй это внутри предоставленной функции main:
setValue(18);
console.log(readValue());setValue записывает общую сохранённую переменную. readValue является view, поскольку возвращает эту переменную, не изменяя её. main также косвенно записывает данные, вызывая setValue, поэтому в его заголовке нет модификатора view или pure.
Функцию, которая записывает состояние контракта, нельзя помечать как view.
Задание
ЛегкоОбъявите состояние level, сеттер setLevel и геттер для чтения getLevel. main должен установить для level значение переданного nextLevel, а затем вывести результат геттера.
Тесты передают аргументы в main в следующем порядке: uint256 nextLevel. Каждый тест начинается с нового состояния контракта.
Используйте console.log для требуемого вывода. Выводите только требуемые значения, по одному в строке, без дополнительных меток, если только задание явно их не требует.
Попробуйте сами
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 nextLevel) external {
// Напишите ваше решение здесь.
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
2Переменные и типы
Беззнаковые целые числаВвод и выводЗнаковые целые числаЛогические значенияСтроки в памятиКарточка профиля5Функции
Параметры функцийВозврат значенийЧистые функцииВызовы вспомогательных функцийПовторно используемые вычисления6Состояние контракта
Переменные состоянияЧтение и запись состоянияОткрытые геттеры состоянияКонстантыОбщий счётчикПотренируйтесь самостоятельно: Песочница Solidity