Zig 入門 #7 - import

2022-04-23  /  ZigProgramming

ziglearn.org を参考に Zig の基本を一通りさらってみます。まずは Chapter 1 - Basics | ziglearn.org から。今回は今までと順番が変わって @import について。そろそろファイルを分けたくなったので。

Imports

参考: Imports

どんな言語でも言語自体に用意されている標準ライブラリを利用したり、コードを複数のファイルに分けて管理して連携させるということが発生します。Zig にもそのためのインポートの機能が用意されています。

const name = @import("path");

今回確認したコードは以下の通りです。

src/main.zig

fn import_() void {
    // @import の引数にファイルの相対パスを指定する
    // `.zig` の拡張子を省略することはできない
    // @import は任意の箇所で呼び出し可能
    const bar = @import("foo/bar.zig");

    // pub がついたものは他ファイルから参照することが可能
    bar.hello();
    _ = bar.public;

    // ついていないものは参照できないのでコンパイルエラーになる
    _ = bar.private;

    // ./src/main.zig:209:12: error: 'private' is private
    //     _ = bar.private;
    //            ^
    // ./src/foo/bar.zig:4:1: note: declared here
    // const private = "private";
    // ^
}

src/foo/bar.zig

const std = @import("std");

pub const public = "public";
const private = "private";

pub fn hello() void {
    std.log.info("hello", .{});
}