列挙型
CoddyのSolidityジャーニー「基礎」セクションの一部。レッスン 44/53。
enum は、名前付きの選択肢の小さな集合を定義します。メンバーを順番に宣言し、その後、メンバーを TypeName.MemberName として参照します。最初のメンバーの数値はゼロ、次のメンバーの値は 1、その次は 2 というようになります。名前付きの選択肢を使うと、説明のない数値よりもステータスが読みやすくなります。
これをコントラクトのスコープで宣言します。
enum Phase { Waiting, Packing, Complete }提供されている main 関数内で使用します。
Phase phase = Phase.Packing;
console.log(uint256(phase));この宣言では Waiting、Packing、Complete が列挙されています。Packing は2番目のメンバーなので、1に変換されます。任意の数値を列挙型に変換すると、その数値が定義された範囲外の場合に元に戻る可能性があるため、ここでは名前付きメンバーを使用してください。
列挙型のメンバーには、宣言順に0から始まる数値が割り当てられます。
チャレンジ
簡単Mode enum を Idle、Running、Finished の順に宣言してください。active が true の場合は Running を、それ以外の場合は Idle を選択し、数値を出力してください。
テストはこの順序で main に引数を渡します: bool active。各テストは、コントラクトの状態を新しくした状態で開始します。
要求された出力には console.log を使用してください。要求された値だけを、1 行に 1 つずつ出力し、タスクで指定されていない限り余分なラベルは付けないでください。
自分で試してみよう
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(bool active) external view {
// ここに解答を書いてください。
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Solidityプレイグラウンド