問題タブ [hacklang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - ハックとPHPの違いは何ですか?
私は数年間 PHP の世界を離れ、それ以来 C#.Net で働いていました。私は再び PHP に飛び込むことを考えています。今日、http://hhvm.com/に出会いました。純粋な PHP よりも C# に似ているようです。
私の質問は、Hack プログラミング言語と PHPの違いは何ですか?
hhvm - HHVM+Hacklang: エラー/警告をブラウザに出力
HHVM に Hacklang の警告とエラーをブラウザーに出力するように指示する方法はありますか? PHP のような何かが enabledで実行されdisplay_errors
、display_startup_errors
にerror_reporting
設定されますE_ALL
HHVM バージョン:
私は次の構成を試しました:
と :
command-line - 厳格モードの Hacklang コマンド ライン プログラム
Hack の厳密モードでコマンド ライン プログラムを作成する方法はありますか? Hack の厳密モードでは関数外のステートメントが許可されないため、関数を呼び出すことができませんmain
。
(メイン関数を呼び出す非厳密なファイルを使用することで問題を回避するのは簡単であるため、これはむしろ理論的な問題です。)
generics - ハック言語: コレクション型のジェネリック
このコードが機能するのはなぜですか?
エラーをスローするべきではありませんか?は何のためにある<int>
はずですか?
syntax - Hack 言語でトップの型は何ですか?
Hack 言語の型システムには、「any」型とも呼ばれる「トップ」型、またはユニバーサル「オブジェクト」型がありますか? つまり、すべての型がサブクラスである型ですか?
マニュアルには「混合」タイプが記載されていますが、これは似ているかもしれませんが、実際には説明されていません。いくつかの場所で型宣言を単純に省略する可能性もあります。ただし、これはどこでも実行できるわけではありません。たとえば、何かを最上位の型から関数として宣言したい場合、string
これを行う方法が明確ではありません。function (string): mixed
?
hacklang - Hack で IoC コンテナーを作成する
私は PHP プロジェクトを Hack に変換する過程にあり、ちょっとした障害に遭遇しました。私がやろうとしているのは、IoC コンテナーを PHP から Hack に書き直すことです。すべてを Hack タイプ チェッカー ツールに渡すのに少し苦労しています。
つまり、基本的に私が持っているのは、文字列をクロージャ マッピングに登録できるコンテナです。アイデアは、クロージャーにクラスをインスタンス化するロジックが含まれているということです。コンテナーは、作成したインスタンスも格納し、新しいインスタンスを強制的に作成することもできます。ここに私のコンテナコードがあります:
このクラス自体は型チェッカーに合格しているようですが、Container::get()
orを使用するContainer::getNew()
と、戻り値が typemixed
であるため、これらによって返されたオブジェクトに対してメソッドを実行しようとすると、このエラーがスローされます。
メンバー x にアクセスしようとしていますが、これはオブジェクトではなく、混合値です
混合では明らかに非オブジェクトが許可されるため、これが理にかなっていることがわかりました。そのため、そのようなコードを でラップする必要がありますが、これをis_object()
行っても型チェッカーのエラーが抑制されないようです。タイプチェッカーが理解できる、何かがHackのオブジェクトであることを確認するより良い方法はありますか?
また、この IoC コンテナー クラスは混合型に大きく依存しているため、私には少し見苦しいです。実行時に戻り値がオブジェクトであることを確認する必要があるのも理想的ではありません。これを行うより良い方法はありますか?ミックスをインターフェイス(IContainableなど)に変更するというアイデアを試してみて、コンテナに格納したいクラスにこれを実装させましたが、タイプチェッカーは、IContainableインターフェイスにメソッドが含まれていないと不平を言いましたコンテナから返されたオブジェクトを呼び出そうとしていました(コードの同じポイントでエラーが発生しましたが、別の理由で)。おそらく、私はこのアプローチで成功に近かったのでしょうか?
助けてくれてありがとう。