Перечисления
Часть раздела Основы путешествия по Solidity на Coddy. Урок 44 из 53.
Перечисление определяет небольшой набор именованных вариантов. Объявите его элементы по порядку, затем обращайтесь к элементу как TypeName.MemberName. Первый элемент имеет числовое значение zero, следующий — значение one и так далее. Именованные варианты делают статус более понятным, чем непонятные числа.
Объявите это на уровне контракта:
enum Phase { Waiting, Packing, Complete }Используйте его внутри предоставленной функции main:
Phase phase = Phase.Packing;
console.log(uint256(phase));Объявление содержит Waiting, Packing и Complete. Packing является вторым членом и поэтому преобразуется в единицу. Преобразование произвольного числа в перечисление может завершиться ошибкой, если число находится вне определённого диапазона, поэтому здесь используйте именованные члены.
Члены перечисления имеют числовые значения, начиная с нуля, в порядке объявления.
Задание
ЛегкоОбъявите перечисление Mode со значениями Idle, Running и Finished в этом порядке. Выберите Running, если active равно true, иначе — Idle, и выведите числовое значение.
Тесты передают аргументы в main в следующем порядке: bool active. Каждый тест начинается с нового состояния контракта.
Используйте console.log для требуемого вывода. Выводите только запрошенные значения, по одному в строке, без дополнительных меток, если только задание явно их не требует.
Попробуйте сами
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(bool active) external view {
// Напишите ваше решение здесь.
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
2Переменные и типы
Беззнаковые целые числаВвод и выводЗнаковые целые числаЛогические значенияСтроки в памятиКарточка профиля5Функции
Параметры функцийВозврат значенийЧистые функцииВызовы вспомогательных функцийПовторно используемые вычисленияПотренируйтесь самостоятельно: Песочница Solidity