私はゲーム開発プロジェクトのために zig を学習しています。詳細については、こちらをご覧ください。これらは、主に JS/TS の最近の経験から得た、この言語に対する私の最初の (ほとんど肯定的な) 印象です。
エラーは価値です- 現時点では、例外が最善ではないというのが非常に一般的な意見です。これらは非表示の制御フローを作成しますが、JavaScript では宣言することさえできません。これにより、アプリケーションがより不安定になります。
Zig はエラー列挙型と優れた構文糖衣を使用して、簡単で楽しいエラー処理を実現します。例:
上記のコードでは、エラー MyError を宣言し (これは個別に実行することもできます)、それを返します。 try は、次のように「エラーが返された場合はここに返す」ことを意味します:
リーリー
その他のハイライト:
!void 構文- !戻り値の型とエラーの型の間の結合を作成するために使用されます。 Zig は、! の前にエラーを追加しないことをサポートしています。これにより、実際に関数から返されるすべてのエラーの結合が作成されることになります。
実際には、この構文は役に立たないと思います。少なくとも私の IDE の経験では、この場合はインテリセンスが得られず、関数がわかりにくくなります。何を返すのか教えてください!main() 関数でのみ役に立ちます。
このアプローチには簡単ですが、問題があります:
リーリー
本当に変更する必要がある場合は、代わりに値へのポインタをキャプチャできます。
このメカニズムは、for、switch、catch などを含む言語全体で使用できることにも言及する価値があります。 コンプタイムの悪ふざけ 確かに、私はまだコンプタイムの可能性を完全には理解していませんでした。しかし要するに、コンパイル中に通常のコードを実行できます。この期間中にのみ使用される関数全体を作成することもでき、必要に応じてコンパイル エラーを返すこともできます。 Zig は非常に順応性の高い言語なので、Zig に非常によく合います。型も値です。つまり、型に関する情報を作成、変更、取得できることを意味します (特にコンプタイムで)。 Zig ガイドからの基本的な例:
リーリー
「検出可能な不正な動作」別名、コンパイル エラーを引き起こす不正な動作は、通常、エディターには表示されません。例:
リーリー
以上がZig JS 開発者からの第一印象の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。