問題タブ [global-variables]
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.
actionscript-3 - グローバル状態の回避
現在、私はアプリを書いています。シングルトンを回避したい場合、すべての参照を単純に渡す必要がありますか?
例えば、
「メイン」クラスがあります。
クラス: メイン
+---- 画面
+---- カメラ
+---- 地形
+---- 乗り物
+---- PhysicsWorld
カメラ、地形、車両などのクラスが含まれています。さて、たとえば地形オブジェクトを作成しているときに問題が発生しました。Terrain は Main クラスの Screen オブジェクトにアクセスして、Terrain Graphics を画面に追加できるようにします。また、描画するときの Camera オブジェクトについても知りたいので、描画するスケールを認識します。また、それ自体を物理エンジンに追加できるように、私の PhysicsWorld オブジェクトについても知りたいと考えています。
これらのオブジェクトを常にコンストラクター間を行き来させる必要がありますか? つまり、Terrain オブジェクトを作成するときに、画面オブジェクト、physicsWorld、カメラなどを渡すだけでよいのでしょうか?
私が持っている別のランダムなシナリオは、現在.. Vehicle クラス内で、 Main クラスで Restart() メソッドを呼び出す必要があります。これは、main のインスタンスを Vehicle に渡す必要があるということですか? 本当??
クラスに常に 4 ~ 5 個のものを渡さなければならないのは面倒です。特に、ほとんどすべてのゲーム内オブジェクトが画面、物理、カメラ情報などを必要とするシナリオでは特にそうです。
助言がありますか?
c++ - C ++で誤ってグローバル定数を再宣言しないようにするにはどうすればよいですか?
「Matrix.h」というヘッダーで定義されたテンプレートマトリックスクラスクラスがあります。
私のプログラムでは、特定の行列が繰り返し使用されています。これらを「Matrix.h」ヘッダーファイルで次のように定義すると思いました。
これを行うと、g++は問題の定数を再定義したと文句を言います。これは、2つの異なるソースファイルにMatrix.hが含まれているために発生します。これらのオブジェクトファイルをコンパイルすると、両方とも上記のマトリックスの定義になり、エラーメッセージが表示されます。
私の質問は、どうすればこの状況を回避できるかということです。複数のファイルにアクセスできる定数が必要ですが、どこに配置すればよいかわかりません。
python - Python ゲーム プログラミング: 私の IO オブジェクトはグローバル変数の正当な候補ですか?
私は、すべての IO アクティビティが IO オブジェクトによって行われる Python でゲームをプログラミングしています (そのオブジェクトを、別のユーザー インターフェイスを実装する別のオブジェクトに簡単に交換できることを願っています)。ゲーム内の他のほとんどすべてのオブジェクトは、ある時点で IO システムにアクセスする必要があります (たとえば、メッセージの出力、プレーヤーの位置の更新、ゲーム内のアクションによって引き起こされる特殊効果の表示)。私の質問は次のとおりです。
IO オブジェクトへの参照をグローバルに使用できるようにすることは理にかなっていますか?
別の方法は、IO オブジェクトへの参照を、__init__()
それを使用する必要があるすべてのオブジェクトの に渡すことです。これはテストの観点からは良いことだと理解していますが、結果として生じる「関数シグネチャの汚染」に見合う価値はありますか?
ありがとう。
javascript - onclickイベントでグローバル関数からjavascript変数パラメーターを呼び出す
json - JSON obj を解析関数から渡しますか? | | 初心者のJavaScriptの質問
関数からオブジェクトを渡そうとしています。これが私のコードです:
私がやりたいのは、parseJSON 関数内でオブジェクト o を使用する代わりに、オブジェクトを渡したいので、loadJSON() 呼び出しの後にオブジェクトを操作できるようにすることです。解析関数内に innerHTML 呼び出しがあるのは「きれい」ではないことがわかりました。
たとえば、スクリプトの開始時に「var jsonOutput」を宣言してから「jsonOutput = o」を作成するなど、多くの反復を試みましたが、jsonOutputが未定義のままになります。jsonOutput を返そうとすると、どこに返されているのかわかりません。とにかく使用できません。
グローバル変数を作成する必要がありますか? 単純な「global jsonOutput」宣言を試みましたが、関数内で変更されていないようです。
困っています、助けてください。
java - グローバル変数を使用するクラスのリファクタリング
グローバル変数から構成の一部を取得するいくつかのクラスに取り組んでいます。
これにはいくつかの理由があります。GLOBALVAR はデータベースと通信していくつかの変数を取得するため、単体テストを作成するのが非常に難しくなります。もう 1 つの問題は、MyClass から継承するクラスが多数 (数十個) あるため、コンストラクターのシグネチャを簡単に変更できないことです。
私の現在の解決策は、 と の追加のデフォルト コンストラクターとセッター メソッドを作成するparams
ことfoo
ですbar
。
私がやった方法以外に、これをリファクタリングする良い方法についてのアイデアはありますか? 私の他の考えは、ファクトリ メソッドを使用することですが、ポリモーフィックな置換の問題に遭遇するのではないかと心配しています。
c++ - ATL プロジェクトでグローバル変数の値を変更しないようにするにはどうすればよいですか?
ActiveX(ATL) プロジェクトでのグローバル変数の使用についてサポートが必要です。ActiveX コンポーネントの基本的な機能は、複合コントロール (webbrowser 組み込み) で指定された URL にナビゲートすることです。URL 文字列は最初に初期化され、グローバル変数に保存されます。これが私の ActiveX プロジェクトのソース コード ファイルです。
(文法は気にしないでください。コード フローを示したいだけです)。
mycomponent ActiveX の使用は、MFC SDI (Single Doc/View) テスト アプリケーションで行われます。流れは次のようになります。
- App Initinstance では、activeX InitPlugin を呼び出して URL 文字列を初期化しました。
- [情報] ダイアログ ウィンドウで、MyComponentCtrl ActiveX を挿入します。[メインフレーム情報] メニュー項目をクリックすると、[情報] ダイアログが表示されます。目標は、情報ダイアログ ウィンドウがポップアップしたときに、常に指定された URL に移動できるようにすることです。
MFC テスト アプリが起動した後、[情報] ダイアログ メニューをクリックすると、[情報] ダイアログ ウィンドウが表示され、URL に正しく移動できます。
しかし、問題は、情報ダイアログを閉じて、しばらく (約 2 ~ 3 分) 待ってから、再度情報ダイアログを表示しようとしたところ、URL に移動できなかったことです。デバッグしたところ、MyComponenet プロジェクトのグローバル変数 szURL の値が失われていることがわかりました。
この問題を解決するにはどうすればよいか教えてください。
よろしくお願いします!
バイオニコダー
java - グローバル変数を使用するか、Java で変数を渡す必要がありますか?
2D タイル ベースの sim ゲームを作成しています。多くの異なるクラスやメソッドからアクセスおよび変更される gridSquares の 2 次元配列があります。毎回 gridSquares の 2 次元配列を渡す必要がありますか、それともグローバルにする必要がありますか? ベストプラクティスはどれですか?
私は、すべてのクラスが拡張できる一連の変数を含むクラスを作成するオプションがあるでしょうか? それは良いアイデアですか、それとも悪いアイデアですか / 良い習慣ではありませんか?
私はまだJavaにかなり慣れていないので、まだ多くを学んでいます!
前もって感謝します。
リリース
c++ - C ++静的グローバルオブジェクトの回避策?
バグが原因でクラッシュしたC++プログラムがあります。静的グローバルオブジェクトのコンストラクター関数の1つでNULLポインターがアクセスされたため、メインに到達することさえありませんでした。さらに悪いことに、ポインタはNULLでしたが、別のグローバル静的変数によって設定されている必要がありました。これらのグローバルを、オブジェクトへのグローバルポインタを設定する関数でラップできると思います。グローバルを再設計する必要があることを私は知っています。また、グローバル静的オブジェクトの順序が不明であることも知っています。私は興味があります-静的グローバルオブジェクトの初期化の順序を制御するための良い受け入れられた方法はありますか?
簡略化された例(ロギングなどをチェックするエラーを削除)
[game.cpp]
以下を使用して、すべての静的オブジェクトを順番に指定したいと思います。
[prposedgame.cpp]
[本当に関連性はありませんが、問題の理解に役立つ場合があります]
[Point.cpp]
[Point.h]