pub関数と可視性
ファイルをまたいで関数を公開します。
「pub関数と可視性」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
ファイルはモジュール
Zigでは、すべてのソースファイルが独自のモジュールになります。他のファイルと共有できる内容は、可視性ルールによって決まります。📦
デフォルトでは非公開
通常の関数は、そのファイル内でのみ非公開です。他のファイルから呼び出せないため、内部ヘルパーを安全に隠せます。
fn helper() void {
// only this file can call me
}pubで公開する
pubキーワードを付けると関数を公開でき、プロジェクト内の他のファイルからインポートして呼び出せるようになります。
pub fn greet() void {
std.debug.print("Hi!\n", .{});
}importで取り込む
別のファイルでは@importを使ってモジュールを読み込み、返された値を通して公開された名前にアクセスします。
const utils = @import("utils.zig");
utils.greet();アクセスできるのはpubの名前だけ
インポートを通して呼び出せるのは公開された名前だけです。非公開の関数は見えないため、誤って使われることもありません。
mainにpubが必要な理由
このため、mainはpubとして記述します。ランタイムはファイルの外側にあり、エントリーポイントにアクセスできなければならないからです。
pubはfn以外にも使える
pubキーワードは定数、型、変数にも使えます。これにより、モジュールの公開インターフェースをすっきり設計できます。
pub const version = "1.0.0";小さなAPIを設計する
呼び出し元が本当に必要とするものだけを公開してください。ヘルパーを非公開にすると、保守するインターフェースを小さく安定させられます。
カプセル化でバグを減らす
内部を隠すことをカプセル化といいます。公開する部分を減らせば、他のファイルを壊さずに実装の詳細を変更できます。
ヘッダーファイルは不要
Cとは異なり、Zigにヘッダーファイルは必要ありません。ファイルをインポートするだけで、その公開宣言を直接利用でき、重複も発生しません。
可視性はコンパイル時に決まる
Zigは可視性をコンパイル時に強制します。ファイルの外から非公開関数を呼び出すと、コンパイルに失敗します。
クイックチェック
math.zigに関数を書きましたが、別のファイルから呼び出せません。最も可能性が高い不足要素は何でしょうか?
まとめ
関数はpubを付けるまで、そのファイルに対して非公開です。呼び出し元に必要なものだけを公開し、@importでインポートすれば、ヘッダーは一切必要ありません。🎯
よくある質問
「pub関数と可視性」レッスンは無料ですか?
はい。「pub関数と可視性」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「pub関数と可視性」で何を学びますか?
ファイルをまたいで関数を公開します。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「pub関数と可視性」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 関数の構文と戻り値の型
- 値渡しと参照渡し
- pub関数と可視性
- 再帰と複数の戻り値