Zig言語フォーマッター
ガイド
Zig言語フォーマッター
raw Zig ソースを貼り付け、すぐにcanonicalスタイルにフォーマットされたコードを取得できます zig fmt スタイル:K&Rブレース、4スペースインデント、マルチラインリストの末尾にコンマ、演算子の周囲に一貫したスペース、そして整然としたマルチライン文字列ブロック。インストールやツールチェーンなし。完全にブラウザ内で動作します。
使用方法
- Zig ソースを入力ボックスに貼り付け、またはアップローダーにファイルをドロップしてください。
.zigファイルをアップロードしてください。 - インデントスタイルを選択してください — 4スペース(zig fmtのデフォルト)、2スペース、またはタブ。
- トグル 終端カンマを追加 マルチライン引数およびフィールドリストの1要素1行ルールに参加するように選択します。
- フォーマットされた出力をコピーするか、または
formatted.zig.
機能
- canonicalブレーススタイル — 悬空している開きブレースを前の行に移動し、K&R / Allmanを避ける。
- オペレーターのスペース — 演算子の周囲にスペースを標準化します
=,==,!=,<=,+,-,*,/,%,++,**,&&と、||無関係な単項またはポインタ構文を破らずに。 - キーワードスペース — にスペースを挿入し、その他の制御フローキーワードの前にスペースを挿入します
if,while,for,switch,catch,orelse— マルチラインリストの最後の項目にコンマを追加します(閉じ括弧が独自の行にある場合)。(または{. - 終端カンマ — にスペースを追加します
{},()と、[]— マルチラインリストの最後の項目にコンマを追加します(閉じ括弧が独自の行にある場合)。 - 複数行の文字列 — を保持し、1レベルインデントして表示します。
\\ブレース検証 - — バランスの取れていない 、およびブロックコメントの終了を未終了としてフラグします。コンパイラエラーを表示する前に。
{},(),[]— ホームスタイルに応じて4スペース、2スペース、またはタブを選択します。 - インデント制御 ファイルまたは貼り付け
- — ファイルをドロップまたは直接貼り付けします。出力はワンクリックでコピー可能でダウンロード可能です。 Zig が自社のフォーマッターを提供する理由は、規則に頼るのではなく、なぜですか?
.zigZig はソースレイアウトを言語契約の一部として扱います。zig fmtはコンパイラのパーサーに基づいた規範的なリワイターであり、すべてのプラットフォーム上のすべてのプロジェクトがバイトごとに同一な出力を生成します。これにより、スタイル議論が排除され、差分がノイズフリーになり、LSPなどのツールが安定したターゲットを得られます。規則がスタイルガイドに記述され、チーム間で漂う一方で、決定論的なフォーマッターはそれとは異なります。
よくある質問
-
Zig におけるトリーリングコンマのルールとは何ですか?
Zig では、引数リスト、構造体フィールドリスト、または配列リテラルの最後の要素にトリーリングコンマが存在することは、zig fmtに「このリストを1要素1行に保つ」というシグナルを送ります。トリーリングコンマを削除すると、リストが1行に収まる場合にzig fmtはリストを1行にまとめて表示します。これにより、フォーマットは部分的に作者の制御を実現し、1つのコンマが垂直と水平レイアウトの違いを決定します。
-
Zig ソースにおけるマルチライン文字列はどのように表されますか?
Zig には3引号文字列はありません。マルチラインリテラルは、各行の先頭にバックスラッシュバックスラッシュシーケンスで始まる1行のフラグメントを積み重ねて構成されます。フラグメントの先頭の空白はインデントの一部であり、コンテンツではありません。したがって、文字列の値は2番目のバックスラッシュ以降の行の終わりまで、そして各行を文字列で結合されたものになります。
-
K&Rブレース配置を特に選んだ理由は何か?
K&Rスタイル — ブロックを導入する構文と同じ行に開きブレースを配置する — 垂直的なノイズを最小限に抑え、条件から体までの視覚的な目線を短く保ちます。また、JavaScriptスタイルの自動セミコロンの危険性を回避し、先頭ブレースの代替が無関係なリターンパース問題を引き起こす可能性があります。ZigはGoおよびRustが標準化したこのレイアウトを採用し、言語の表面を簡潔に保ちました。
-
ヒューリスティックフォーマッターが、実際のzig fmtと比較して間違えることはありますか?
正規表現とセグメントベースのフォーマッターは、パーサーベースのフォーマッターに限界がある — comptimeブロック、一般化された匿名構造体、ラベル付きブロックは文脈に依存したスペースルールを持ちます。日常的なフォーマットの大部分(インデント、ブレース配置、演算子のスペース、トリーリングコンマ)において、ヒューリスティック出力は区別できません。コミット前のcanonical正しくフォーマットするには、ローカルでzig fmtを実行してください。ブラウザ内のツールは、簡単なクリーンアップ、コードレビューのプレビュー、チャットに貼り付けられたスニペットに使用します。
-
Zig Language Formatter 1
Zig Language Formatter
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
