問題タブ [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.

0 投票する
7 に答える
55774 参照

objective-c - Cocoa / Objective-Cのグローバル変数?

Mac OS X用Cocoaプログラミング、第3版、 202ページ(第13章)によると:

アプリケーションのいくつかのクラスで、デフォルトの登録、読み取り、および設定を行います。常に同じ名前を使用するようにするには、これらの文字列を1つのファイルで宣言してから、そのファイルを名前を使用する任意のファイルに#importする必要があります。これを行うにはいくつかの方法があります。たとえば、Cプリプロセッサの#defineコマンドを使用できますが、ほとんどのCocoaプログラマーはこの目的でグローバル変数を使用します。

これは本当に正しいベストプラクティスですか?グローバル変数?それは私には非常識に思えます-私がこれまでに教えられたすべてに反します。

より良い設計は、これらが定義された単純なシングルトンクラスでしょうか?それとも、グローバル化することが本当に正しいベストプラクティスですか?多くの人がシングルトンをきれいなドレスを着たグローバルだと考えていることを考えると、どちらよりも良いパターンはありますか?

0 投票する
9 に答える
20081 参照

singleton - わかりました、グローバル変数は非難され、シングルトンは軽蔑されます。代替手段は何ですか?

つまり、デスクトップアプリケーションの場合。これは一般的な質問であり、一般的な回答のみが必要な場合があります。

0 投票する
2 に答える
2188 参照

sql - ExecuteSQL タスクでの「グローバル」変数へのアクセス

次のことを行う SSIS パッケージがあります。 サーバーのテーブルから接続文字列を選択します。接続文字列は、サーバーの名前とドメイン (つまり、Dalin.myhouse.com) であるか、サーバーへの直接の IP です。

パッケージは、各接続文字列を反復処理し、定義された「グローバル」変数を設定します。この変数は、変数デザイナーで作成されました。接続文字列ごとに、パッケージはサーバーに関する情報を取得します。

私が抱えている問題は、サーバー IP をリストに追加するときに、「フレンドリ名」がその時点でわからない可能性があるため、サーバー IP を接続文字列列とフレンドリ名列の両方に入れることです。テーブル。反復の終了後、そのテーブル内のサーバー エントリのフレンドリ名列を更新して、SERVERPROPERTY('Servername') を使用してサーバーからサーバー名が取得されるようにします。

これを行うには、次のコードで ExecuteSQL タスクを使用したいと思います。

前のコードは、myServers テーブルが存在するサーバーへの静的接続を使用しています。

VarA は、SERVERPROPERTY('Servername') を使用して別の SQLTask で設定される ServerName に設定するグローバル値を表します。現在の反復が使用しているのと同じサーバーを使用してサーバーに接続する必要があるため、別のタスクにする必要があります。

VarB は、すべての反復の開始時に、リスト内の次の接続文字列に設定されます。

これをスクリプト タスクとスクリプト コンポーネントに使用する方法の例を見てきましたが、単純に ExecuteSQL タスクを使用してこれを達成したいと思います。

概要:
ServerA に接続し、2 つのグローバル変数を入力します。
ServerB に接続し、2 つのグローバル変数を使用してテーブル内の特定の行を更新します。

何か案は?

0 投票する
10 に答える
271852 参照

javascript - グローバル変数を使用せずに他の関数から変数にアクセスする

グローバル変数は本質的に厄介で邪悪であるとさまざまな場所から聞いたことがありますが、オブジェクト指向ではない Javascript を実行する場合、それらを回避する方法がわかりません。乱数などを使用して複雑なアルゴリズムを使用して数値を生成する関数があるとしますが、その特定の数値をコールバックなどの他の関数で使用し続ける必要があるため、同じ関数の一部にすることはできません。

最初に生成された数値がローカル変数である場合、そこからアクセスすることはできません。関数がオブジェクトメソッドである場合、数値をプロパティにすることができますが、そうではなく、これを行うためにプログラム構造全体を変更するのはやや複雑すぎるようです。グローバル変数は本当に悪いのでしょうか?

0 投票する
1 に答える
3039 参照

c# - リクエスト期間のグローバル変数を設定する

ページのすべてのコントロールがそれぞれにパススルーしなくても応答できるように、単一のリクエストの長さに対してある種のグローバル変数を設定できますか?

たとえば、誰かが私の MasterPage で [保存] ボタンを押した場合、ページの各 UserControl が次のような Page_Load を持つことができるように何かを設定できますか?

マスターページのデリゲートにページの保存関数を呼び出してから、各 UserControl に UC1.saveData() を呼び出すよりもはるかに簡単に思えますが、オブジェクト指向の考え方の方が優れていることはわかっています。

0 投票する
22 に答える
3648691 参照

python - 関数でグローバル変数を使用する

関数でグローバル変数を作成または使用するにはどうすればよいですか?

ある関数でグローバル変数を作成した場合、そのグローバル変数を別の関数で使用するにはどうすればよいですか? アクセスが必要な関数のローカル変数にグローバル変数を格納する必要がありますか?

0 投票する
2 に答える
447 参照

c# - Getting a Global setting in C #

Taking this article on classes and structs as an example:

http://msdn.microsoft.com/en-us/library/ms173109.aspx

suppose I wanted to make use of the "myClass" defined in the Main routine elsewhere in the program as if it were a global class.

How would I do that?

0 投票する
4 に答える
757 参照

c++ - グローバルに知られ、自動的に削除される一時ディレクトリを作成しますか (C++)?

C++ では、一時ディレクトリに書き込む必要のある関数がいくつかあります。理想的には、(I/O オーバーヘッドを最小限に抑えるため) すべてが書き込まれる 1 つの一時ディレクトリのみが作成されます。プログラムが終了すると、そのディレクトリは自動的に削除されます。

ただし、実際にディレクトリを使用する関数のみがその作成と削除を担当する必要があると思うため、メイン関数で一時ディレクトリの作成と削除を処理したくありません。また、メイン関数は、一時ディレクトリが使用されていることを必ずしも認識していません。

これが私が試したことです(以下のコードを参照):どこからでもグローバルに呼び出すことができるgetTempDir()関数は、最初の呼び出しでのみディレクトリを作成し、すべての呼び出しでディレクトリ名を返します。最初の呼び出しでは、デストラクタがディレクトリを削除する小さな DirRemover オブジェクトへの静的な boost::shared_ptr も作成します。そのデストラクタは、プログラムの終了時に自動的に呼び出されます。

問題は、プログラムの終了に失敗した場合や kill などで FileRemover デストラクタを呼び出さないことです。より良い解決策はありますか?

コードは次のとおりです。