Menu
Coddy logo textTech

Чистые функции

Часть раздела Основы путешествия по Solidity на Coddy. Урок 23 из 53.

Чистая функция вычисляет результат на основе своих параметров и локальных значений, не читая и не изменяя состояние контракта. Благодаря этому рассуждать о вычислении проще. Пометка функции как pure — это обещание, проверяемое компилятором, а не запрос на удаление данных.

Определите этот вспомогательный метод внутри контракта:

function perimeter(uint256 w, uint256 h) internal pure returns (uint256) {
    return 2 * (w + h);
}

Используйте его внутри предоставленной функции main:

console.log(perimeter(8, 3));

Вспомогательной функции нужны только ширина и высота. Она возвращает удвоенную сумму этих значений, поэтому может быть чистой. Основная оболочка остаётся представлением, поскольку использует консоль отладки; сама вспомогательная функция не содержит журналирования и не обращается к состоянию.

Чистая функция не читает состояние контракта и не записывает его.

challenge icon

Задание

Легко

Создайте чистую внутреннюю вспомогательную функцию с именем triple, которая возвращает значение uint256, умноженное на три. Выведите triple(value) из main.

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

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

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

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

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

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

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