Enum型の定義は、次のように行います:
pragma solidity ^0.8.0;
contract MyContract {
enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
// Enum型を使用した変数の宣言と初期化
Days public currentDay = Days.Monday;
// Enum型を使用した関数の例
function getNextDay() public view returns (Days) {
uint256 nextDay = (uint256(currentDay) + 1) % 7;
return Days(nextDay);
}
}
上記の例では、Days
という名前のEnum型を定義しています。Enum型の各メンバーは、列挙子(enumerator)と呼ばれ、コンマで区切られています。上記の例では、Monday
からSunday
までの7つの列挙子が定義されています。
Enum型を使用する際には、変数の宣言や関数の引数として使用することができます。例えば、上記の例では、currentDay
というEnum型の変数を宣言し、初期値をDays.Monday
としています。また、getNextDay
という関数では、現在の日付から翌日の日付を計算して返す例を示しています。
Enum型のメンバーは整数として扱われます。上記の例では、getNextDay
関数内で、現在の日付の整数値を取得し、1を加算して7で割った余りを計算しています。これにより、次の日付のEnum型の値が得られます。
Enum型は、特定の値のセットを表現する場合に便利です。例えば、曜日や状態など、一連の定数を表現する必要がある場合に使用することができます。
以上が、SolidityのEnum型の使用方法とコード例の解説です。Enum型を使用することで、スマートコントラクトの開発において特定の値のセットを効果的に表現することができます。