Чистые функции
Часть раздела Основы путешествия по 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));Вспомогательной функции нужны только ширина и высота. Она возвращает удвоенную сумму этих значений, поэтому может быть чистой. Основная оболочка остаётся представлением, поскольку использует консоль отладки; сама вспомогательная функция не содержит журналирования и не обращается к состоянию.
Чистая функция не читает состояние контракта и не записывает его.
Задание
ЛегкоСоздайте чистую внутреннюю вспомогательную функцию с именем 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 {
// Напишите ваше решение здесь.
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
2Переменные и типы
Беззнаковые целые числаВвод и выводЗнаковые целые числаЛогические значенияСтроки в памятиКарточка профиля5Функции
Параметры функцийВозврат значенийЧистые функцииВызовы вспомогательных функцийПовторно используемые вычисленияПотренируйтесь самостоятельно: Песочница Solidity