Back

Lesson 11:
Enumerables

Introduction to enum types and how to use it in your smart contracts.

Progress: 0%

Visit desktop version for better experiences.

Enumerables

Solidity supports enumerables(enum) and they are useful to keep track of state. Enums are one way to create a user-defined type.

The options are represented by subsequent unsigned integer values starting from 0.

// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; contract Game { // Enum representing game status enum Status { NotStarted, InProgress, GameOver, Won } // Default value is the first element listed in // definition of the type, in this case "NotStarted" Status public status; // Returns uint // NotStarted - 0 // InProgress - 1 // GameOver - 2 // Won - 3 function getStatus() public view returns (Status) { return status; } // Update status by passing uint into input function setStatus(Status _status) public { status = _status; } // You can update to a specific enum like this function win() public { status = Status.Won; } // delete resets the enum to its first value, 0 function reset() public { delete status; } }

To declare enum:

pragma solidity ^0.8.24; // This is saved as 'GameStatus.sol' enum Status { NotStarted, InProgress, GameOver, Won }

To import the enum above:

// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; import "./GameStatus.sol"; contract Enum { Status public status; function setStatus(Status _status) public { status = _status; } }

© 2024 Scroll Foundation | All rights reserved

Terms of UsePrivacy Policy