1

私はHaxeを学び始めていますが、Haxeが強い型か弱い型かを知りたいです。その型システムが強くも弱くもない場合、 Dartプログラミング言語のように「オプションで型付け」されているのでしょうか。

明示的な型宣言がないにもかかわらず、このコード行が機能しているように見えることに気づきました。var a = [["This is a nested array"], ["This is another nested array"], "This is not a nested array" ];

4

2 に答える 2

4

Haxe は大部分が厳密に型指定された言語ですが、期待するほど厳密ではありません。他のいくつかの言語よりもはるかに寛大で、必要に応じて型システムから抜け出すことができます。また、毎回すべての型を指定する必要はありません-コンパイラは型推論を使用して型を「推論」します-例では、推論された型はArray<Dynamic>

ヘイクスの場合:

  • コンパイラは、デフォルトで強く型付けされます。型情報を指定することも (例: var x:Array<Int>;)、コンパイラに推論させることもできます (例: var x = [0,1,2]x は になりますArray:Int)。

  • これは、何が起こっているのか$type(myVariable);を理解するのに役立ちます。

  • 型の推論が混乱したり、コンパイラが混乱したりする場合は、型を明示的に定義する方が簡単な場合があるため、混乱はありません。

  • DynamicReflection、またはuntypedのいずれかを使用して、型システムをエスケープできます (邪魔になる場合、またはネイティブ ライブラリを操作しようとしている場合など) 。

  • Haxe の型チェックは、ほとんどがコンパイル時の機能です。コードをコンパイルするときに、型がチェックされ、正しいことが保証されます。ただし、実行時に奇妙なことをしようとすると、型チェックが行われず、何かが壊れる危険があります。

  • Haxe のターゲットの中には型付けが弱いものがあります (Javascript、Neko など)。ただし、Haxe の型チェックはコンパイル時に行われるため、厳密に型指定された言語のすべての利点 (エラー チェック、自動補完など) を利用できます。コンパイルされた Javascript または Neko Bytecode は型について認識しませんが、それは問題ではありません - Haxe は、すべてが機能することを確認しました。

理解しやすいように、いくつかのリンクを次に示します。

于 2012-11-22T01:18:21.827 に答える