0Pricing
Zig Academy · レッスン

comptimeパラメーターと値

コンパイル時に存在する値を渡します。

「comptimeパラメーターと値」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。

一部の引数は早い段階で既知でなければならない

関数によっては、実行中のプログラムだけでなく、コンパイラーから見える引数が必要です。Zigでは、そのようなパラメーターにcomptimeを付けられます。🧩

comptimeパラメーターを指定する

パラメーター名の前にcomptimeと書くと、その値をコンパイル時に既知にするよう要求できます。呼び出し側は既知の値を渡さなければなりません。

fn repeat(comptime n: usize) void {}

呼び出し側が既知の値を渡す

comptimeパラメーターが受け取れるのは、リテラルや他のコンパイル時定数など、コンパイラーがすでに知っている値だけです。

repeat(3);

ランタイム値は拒否される

ランタイムにならないと分からない値をcomptimeパラメーターに渡すと、Zigは明確なコンパイルエラーを報告します。

本体内のcomptime

ローカルの式を早期に評価するよう強制することもできます。comptimeブロックはコンパイル中に実行され、定数を生成します。

const table = comptime buildTable();

コンパイル時の状態にはcomptime var

comptime varは、コンパイル中だけ存在する可変変数です。コンパイル時のコードの実行に合わせて値を蓄積するために使います。

comptime var sum = 0;

既知の値で関数を特化する

comptime引数は固定されているため、Zigはその値に合わせた関数の専用版を生成できます。

comptimeパラメーターと通常のパラメーターを混在させる

関数は、既知の部分にcomptimeパラメーターを使い、ランタイムデータには通常のパラメーターを使うというように、両方を同時に受け取れます。

fn scale(comptime factor: u8, x: u32) u32 {
    return x * factor;
}

引数を早期に検証する

値が既知であるため、コンパイル中に検査し、誤っていればプログラムが実行される前にビルドを停止できます。✅

ランタイムコストはない

comptimeパラメーターによる処理はビルド中に行われます。生成されたバイナリが答えを保持するため、計算すべきものは残りません。

関数内ではパラメーターは定数になる

関数本体の中ではcomptimeパラメーターは固定された定数として動作するため、配列サイズなど、コンパイル時に決まる場所で使用できます。

fn buffer(comptime n: usize) [n]u8 {
    return undefined;
}

確認問題

関数がパラメーターをcomptime n: usizeとして宣言しています。呼び出し側はどのような値を渡す必要がありますか。

まとめ

パラメーターにcomptimeを付けると、コンパイル時の値を要求できます。これにより、Zigはランタイムコストなしで値を検証し、関数を特化できます。🎯

よくある質問

「comptimeパラメーターと値」レッスンは無料ですか?

はい。「comptimeパラメーターと値」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。

「comptimeパラメーターと値」で何を学びますか?

コンパイル時に存在する値を渡します。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Zig Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「comptimeパラメーターと値」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このZig Academyレッスンでコードを書いて実行できますか?

はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. コンパイル時と実行時
  2. comptimeパラメーターと値
  3. 型はcomptime値である
  4. inline forとループ展開
← Zig Academyに戻る