0
0
Blockchain / Solidityprogramming~20 mins

Enums in Blockchain / Solidity - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Enum Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Solidity enum code?

Consider this Solidity contract snippet using an enum. What will be the output when getStatus() is called?

Blockchain / Solidity
pragma solidity ^0.8.0;

contract Order {
    enum Status { Pending, Shipped, Delivered, Cancelled }
    Status public status;

    constructor() {
        status = Status.Shipped;
    }

    function getStatus() public view returns (string memory) {
        if (status == Status.Pending) return "Pending";
        else if (status == Status.Shipped) return "Shipped";
        else if (status == Status.Delivered) return "Delivered";
        else return "Cancelled";
    }
}
A"Shipped"
B"Pending"
C"Delivered"
D"Cancelled"
Attempts:
2 left
💡 Hint

Look at the constructor and see which enum value is assigned to status.

🧠 Conceptual
intermediate
1:00remaining
What integer value does the first enum member have in Solidity?

In Solidity, enums start with the first member assigned which integer value?

AUndefined until assigned
B1
C-1
D0
Attempts:
2 left
💡 Hint

Think about how counting usually starts in programming.

🔧 Debug
advanced
2:00remaining
Which option causes a runtime error in this Solidity enum usage?

Given this enum and function, which option will cause a runtime error?

enum Color { Red, Green, Blue }

function setColor(uint c) public pure returns (Color) {
    return Color(c);
}
ACalling setColor(1) returns Color.Green
BCalling setColor(0) returns Color.Red
CCalling setColor(3) causes an error
DCalling setColor(2) returns Color.Blue
Attempts:
2 left
💡 Hint

Check the valid range of enum values and what happens if you pass a number outside that range.

📝 Syntax
advanced
2:00remaining
Which option correctly declares and uses an enum in Solidity?

Choose the correct Solidity code snippet that declares an enum and assigns a value to a state variable.

A
enum State { Active, Inactive }
State public state = State.Active;
B
enum State { Active, Inactive }
State public state = Active;
C
enum State { Active, Inactive }
State state = State[0];
D
enum State { Active, Inactive }
State state = 1;
Attempts:
2 left
💡 Hint

Remember how to refer to enum members with their enum type.

🚀 Application
expert
3:00remaining
How many items are in the enum after this Solidity code runs?

Given this enum and contract, how many enum members exist?

pragma solidity ^0.8.0;

contract TrafficLight {
    enum Light { Red, Yellow, Green }

    function countLights() public pure returns (uint) {
        return uint(type(Light).max) + 1;
    }
}
A2
B3
C4
DCompilation error
Attempts:
2 left
💡 Hint

Look at how type(Light).max relates to enum members.