Zig Academy · レッスン

出力と終了コードの書き込み

結果を報告し、状態を通知します

レッスン 3/413 ステップ

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

ツールは応答を返す

入力を読み取るだけでは仕事の半分です。完成したCLIは出力を書き込み、実行した側に成功または失敗を伝える必要もあります。📤

2つの出力ストリーム

プログラムには2つのチャネルがあります。通常の結果にはstdout、メッセージやエラーにはstderrを使います。分けておくと、ユーザーは結果をきれいにパイプできます。

stdoutのWriterを取得する

std.io.getStdOutを使ってWriterを取得します。このWriterを通じて、通常の出力をターミナルに送ります。

const out = std.io.getStdOut().writer();

printで表示する

Writerのprintメソッドは、使い慣れたフォーマット文字列と引数タプルを使い、1回の呼び出しで整形と書き込みを行います。

try out.print("Result: {d}\n", .{total});

書き込みは失敗することがある

出力先は閉じられる可能性のある実際のストリームなので、書き込みはエラーを返します。そのため、すべてのprintの前にtryを置きます。

エラーはstderrに送る

警告や失敗はstd.io.getStdErrに送り、パイプで渡す結果に混ざらないようにします。データが流れている間も、ユーザーはエラーを確認できます。

const err = std.io.getStdErr().writer();

手軽なデバッグ出力

簡単なログにはstd.debug.printを使います。tryなしでstderrに直接書き込めるため、開発中には便利ですが、実際の出力には適していません。

std.debug.print("loaded {d} items\n", .{count});

終了コードの慣例

プログラムが終了すると、数値を返します。0は成功を意味し、0以外の値はシェルに問題が発生したことを伝えます。

mainはエラーを返せる

mainの戻り値の型を!voidにします。エラーが外へ伝播すると、Zigがトレースを表示し、0以外の終了コードで終了してくれます。

pub fn main() !void {}

終了コードを自分で選ぶ

特定のステータスが必要なら、u8を渡してstd.process.exitを呼び出します。プログラムは直ちに終了し、指定した終了コードをそのまま返します。

std.process.exit(2);

終了前にフラッシュする

buffered writerを使った場合は、終了前にflush()を呼び出します。そうしないと、バッファー内のテキストがターミナルに届かないことがあります。

try bw.flush();

クイックチェック

終了コードが、そのツールを起動したシェルに何を伝えるか思い出しましょう。

まとめ

stdoutに結果を書き込み、stderrにエラーを書き込み、すべての書き込みでtryを使い、明確な終了コードで終了しました。これでツールはきれいに状況を報告できます。🎯

無料で開始

AI チューターと学ぶ Zig — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「出力と終了コードの書き込み」レッスンは無料ですか?

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

「出力と終了コードの書き込み」で何を学びますか?

結果を報告し、状態を通知します ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「出力と終了コードの書き込み」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. コマンドライン引数の読み取り
  2. ファイルとstdinの読み取り
  3. 出力と終了コードの書き込み
  4. バイナリのパッケージ化とリリース
← Zig Academyに戻る