Zig JS 開発者からの第一印象

PHPz
リリース: 2024-08-24 22:31:38
オリジナル
745 人が閲覧しました

Zig First Impressions from a JS Dev

私はゲーム開発プロジェクトのために zig を学習しています。詳細については、こちらをご覧ください。これらは、主に JS/TS の最近の経験から得た、この言語に対する私の最初の (ほとんど肯定的な) 印象です。

エラー処理

エラーは価値です- 現時点では、例外が最善ではないというのが非常に一般的な意見です。これらは非表示の制御フローを作成しますが、JavaScript では宣言することさえできません。これにより、アプリケーションがより不安定になります。

Zig はエラー列挙型と優れた構文糖衣を使用して、簡単で楽しいエラー処理を実現します。例:

リーリー

上記のコードでは、エラー MyError を宣言し (これは個別に実行することもできます)、それを返します。 try は、次のように「エラーが返された場合はここに返す」ことを意味します:

リーリー

このアプローチは素晴らしい組み合わせであり、Go ランドでの無限の if (err != nil) から私たちを救ってくれると信じています。

その他のハイライト:

    エラーは明示的であり、すべてのタイプを宣言して処理する必要があります
  • 処理はブロックレベルではなく、その場で行われます
  • ペイロード キャプチャのおかげで、エラーが正しく入力され、自動補完されるため、switch 式などを簡単に使用できるようになります。

!void 構文- !戻り値の型とエラーの型の間の結合を作成するために使用されます。 Zig は、! の前にエラーを追加しないことをサポートしています。これにより、実際に関数から返されるすべてのエラーの結合が作成されることになります。

実際には、この構文は役に立たないと思います。少なくとも私の IDE の経験では、この場合はインテリセンスが得られず、関数がわかりにくくなります。

何を返すのか教えてください!main() 関数でのみ役に立ちます。

ペイロードのキャプチャ

TS では数値 | のような型がどのように存在するかご存知でしょう。未定義? if または何らかのロジックを使用して型を必要なものに絞り込むと、TS が新しい型を自動的に正しく表示します。

このアプローチには簡単ですが、問題があります:

    関数全体で型が変わる可能性がある場合、追跡するのが難しくなります
  • 場合によっては、キャストを行う必要がある場合もあります
Zig では、これを「ペイロード キャプチャ」で行います。結果の型を使用して新しい不変変数を「キャプチャ」することも、作成することもできます。例:


リーリー

何が起こっているかは非常に明らかです!さらに、変数は不変ですが、

本当に変更する必要がある場合は、代わりに値へのポインタをキャプチャできます。

このメカニズムは、for、switch、catch などを含む言語全体で使用できることにも言及する価値があります。

コンプタイムの悪ふざけ

確かに、私はまだコンプタイムの可能性を完全には理解していませんでした。しかし要するに、コンパイル中に通常のコードを実行できます。この期間中にのみ使用される関数全体を作成することもでき、必要に応じてコンパイル エラーを返すこともできます。

Zig は非常に順応性の高い言語なので、Zig に非常によく合います。型も値です。つまり、型に関する情報を作成、変更、取得できることを意味します (特にコンプタイムで)。

Zig ガイドからの基本的な例:


リーリー

編集者の経験

私は公式 Zig プラグイン (zls を使用) で VSCode を使用しています。エディターに表示されるインテリセンスとエラーには、まだ改善の余地がたくさんあります。

「検出可能な不正な動作」別名、コンパイル エラーを引き起こす不正な動作は、通常、エディターには表示されません。例:
リーリー

私は 0.14 (dev) マスター ブランチ バージョンを使用しています。正常に動作する場合は、コメントで知らせてください!

以上がZig JS 開発者からの第一印象の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!