Menu
Coddy logo textTech

Чтение и запись состояния

Часть раздела Основы путешествия по 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.

challenge icon

Задание

Легко

Объявите состояние level, сеттер setLevel и геттер для чтения getLevel. main должен установить для level значение переданного nextLevel, а затем вывести результат геттера.

Тесты передают аргументы в main в следующем порядке: uint256 nextLevel. Каждый тест начинается с нового состояния контракта.

Используйте console.log для требуемого вывода. Выводите только требуемые значения, по одному в строке, без дополнительных меток, если только задание явно их не требует.

REQUIRED OUTPUT FORMAT: [Your translated content here]

Попробуйте сами

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
    function main(uint256 nextLevel) external  {
        // Напишите ваше решение здесь.
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Solidity