enumのメソッドと基底整数型
振る舞いを追加し、表現形式を制御します。
「enumのメソッドと基底整数型」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
Enum は振る舞いを持てる
enum は実際の型なので、メソッドを持てます。enum の本体内で、値の名前のすぐ隣に関数を宣言します。
Enum のメソッド
enum の内部に関数を記述し、最初の引数として self を受け取ります。struct のメソッドと同じように動作します。
const Color = enum { red, green, fn isRed(self: Color) bool { return self == .red; } };Enum メソッドの呼び出し
値に対してドット記法でメソッドを呼び出します。値が self になるため、メソッドはどのバリアントに対して呼び出されたかを把握できます。
const ok = c.isRed();すべての Enum は整数を基盤に持つ
内部では、各 enum 値が整数に対応付けられます。Zig はすべての値を格納できる小さな基盤整数型を選びます。
デフォルトの番号付けはゼロから始まる
デフォルトでは、最初の値が 0 で、その後の値は1ずつ増えます。そのため red は 0、green は 1 というように、順序に従って番号が付けられます。
const Color = enum { red, green, blue }; // 0, 1, 2基盤型の選択
enum(u8) のように、かっこ内で基盤となる整数型を指定できます。これにより正確なビット幅が決まり、レイアウトや相互運用性に影響します。
const Code = enum(u8) { a, b, c };明示的な値の設定
= を使って値に特定の数値を割り当てられます。整数値をプロトコルやハードウェアのレジスタに一致させる必要がある場合に便利です。
const Status = enum(u8) { ok = 0, busy = 1, err = 255 };Enum から整数へ
@intFromEnum を使うと、enum 値を数値に変換できます。送信または格納するための基盤整数を取得できます。
const n = @intFromEnum(Status.err); // 255整数から Enum へ
逆方向には @enumFromInt を使い、数値を想定する型の enum 値に変換します。
const s: Status = @enumFromInt(1);慎重に変換する
@enumFromInt は、その数値が有効なバリアントであることを前提とします。safe ビルドでは不正な値が検出されますが、それ以外では自分で検証する必要があります。
メソッドとタグの組み合わせ
2つの考え方を組み合わせます。レイアウト用に基盤型を選び、プロトコル用に値を設定し、メソッドを追加して enum を自己完結させます。
クイックチェック
Status enum の値があり、その基盤となる数値が必要です。どの builtin を使いますか?
まとめ
self を使って enum にメソッドを追加し、enum(u8) のような基盤整数を選び、明示的な値を設定しました。また、@intFromEnum と @enumFromInt で相互に変換しました。🔢
よくある質問
「enumのメソッドと基底整数型」レッスンは無料ですか?
はい。「enumのメソッドと基底整数型」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「enumのメソッドと基底整数型」で何を学びますか?
振る舞いを追加し、表現形式を制御します。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「enumのメソッドと基底整数型」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 値の固定された集合にenumを使う
- 複数の型のいずれかを保持するユニオン
- タグ付きユニオンとswitch
- enumのメソッドと基底整数型