anytypeパラメーター
ダックタイピングであらゆる引数を受け取ります。
「anytypeパラメーター」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
anytypeで何でも受け取る
型をまったく名前で指定したくない場合もあります。パラメーターをanytypeとして宣言すると、Zigが引数から型を推論します。🦆
fn show(x: anytype) void {}呼び出し時に型が推論される
anytypeでは、先頭に型パラメーターを置きません。呼び出し側の引数ごとに、その特殊化で使う具体的な型が決まります。
show(42);
show(true);これはダックタイピング
Zigは、渡された引数に対して本体の演算が機能するかだけを確認します。必要な形をしていれば使えます。これがduck typingです。
必要なら型を取得する
関数内部で@TypeOfを使って型を取得し、ローカル変数や戻り値に利用することもできます。
fn dup(x: anytype) @TypeOf(x) {
return x;
}出力向けヘルパーに最適
さまざまな形に対応する関数ではanytypeが活躍します。Zig自体のprintも、フォーマットする引数のanytypeタプルを受け取ります。
std.debug.print("{any}\n", .{x});制約は本体から決まる
明示的なインターフェースはありません。本体でx.lenを呼び出すなら、実際にlenフィールドを持つ引数だけがコンパイルできます。
fn size(x: anytype) usize {
return x.len;
}エラーは特殊化ごとに発生する
本体で処理できない型を呼び出し側が渡すと、Zigはそのcall siteでエラーを報告し、失敗した正確な型を示します。
comptimeで入力を検証する
より分かりやすいエラーにするには、早い段階で@typeInfoを使って型を調べ、コンパイル時のチェックで正しくない形を拒否できます。
anytypeとcomptime T: type
型をあらかじめ名前で指定する必要がある場合はcomptime T: typeを使い、推論と柔軟性を重視する場合はanytypeを使います。
実行時コストもゼロ
ほかのZigのジェネリックと同様に、anytype関数はコンパイル時に特殊化されるため、推論による柔軟性が実行時のコストになることはありません。
anytypeと名前付きの型を組み合わせる
1つの関数で両方のスタイルを組み合わせられます。柔軟な入力にはanytypeパラメーターを使い、固定データには通常の型付きパラメーターを使います。
fn join(sep: u8, x: anytype) void {
_ = sep;
_ = x;
}確認問題
fn show(x: anytype)と書いた場合、Zigはxの具体的な型をどのように決定しますか?
まとめ
anytypeキーワードを使うと、パラメーターは任意の引数を受け取れます。型は推論され、本体は呼び出しごとに検査されます。これがZigの柔軟なダックタイピングです。🎯
AI チューターと学ぶ Zig — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「anytypeパラメーター」レッスンは無料ですか?
はい。「anytypeパラメーター」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「anytypeパラメーター」で何を学びますか?
ダックタイピングであらゆる引数を受け取ります。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「anytypeパラメーター」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 型を受け取る関数
- ジェネリックなデータ構造
- @TypeOfと型リフレクション
- anytypeパラメーター