問題タブ [scope]

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 に答える
16997 参照

ruby - Rubyのインスタンスからプライベートクラスメソッドを呼び出す方法はありますか?

以外self.class.send :method, args...はもちろん。コードを複製せずに、クラス レベルとインスタンス レベルの両方でかなり複雑なメソッドを使用できるようにしたいと考えています。


アップデート:

@ジョナサン・ブラナム:それは私の仮定でしたが、他の誰も方法を見つけていないことを確認したかった. Ruby での可視性は、Java での可視性とは大きく異なります。privateこれはプライベートクラスメソッドを宣言しますが、クラスメソッドでは機能しないこともまったく正しいです。

0 投票する
6 に答える
95340 参照

javascript - $.getJSON 関数から変数を返すにはどうすればよいですか

利用範囲StudentId外での利用に戻したい$.getJSON()

これはスコーピングに関係していると思いますが、c#と同じようには機能しないようです。

0 投票する
15 に答える
12712 参照

php - PHP:$_SESSION-一時的に使用されるデータを$_SESSION変数に格納することの長所と短所は何ですか

私が最近頻繁に始めたことの1つは、タスクの開始時にデータを取得し、それを$_SESSION['myDataForTheTask']に格納することです。

今ではそうするのはとても便利なようですが、このアプローチを使用した場合のパフォーマンスやセキュリティリスクなどについては何も知りません。それは、より専門知識のあるプログラマーによって定期的に行われていることですか、それともアマチュアのことですか?

例えば:

0 投票する
12 に答える
1677 参照

perl - Perl: CGI および DBI モジュールの変数スコープの問題

以前に遭遇したことのない可変スコープの問題と思われるものに遭遇しました。Perl の CGI モジュールと DBI の do() メソッドの呼び出しを使用しています。コード構造を少し簡略化したものを次に示します。

#1 プレースホルダー変数は、初期化されていないかのように評価されます。他の 2 つのプレースホルダー変数は機能します。

質問: do() のコンテキスト内で %in ハッシュを使用できないのはなぜですか?二重引用符で囲む (#2 プレースホルダー) か、値を新しい変数に再割り当てする (#3 プレースホルダー) 場合を除きます。

CGI モジュールの ReadParse() 関数がスコープを %in ハッシュに割り当てる方法と関係があると思いますが、なぜ %in がトップレベルで利用可能であるのに私の do 内からは利用できないのかを理解するのに十分なほど Perl のスコーピングを知りません。 () 声明。

誰かがスコーピングの問題を理解している場合、それを処理するより良い方法はありますか? すべての %in 参照を二重引用符で囲むのは少し面倒です。クエリ パラメータごとに新しい変数を作成するのは現実的ではありません。

明確にするために、私の質問は変数のスコープの問題に関するものです。ReadParse() は、CGI でクエリ パラメータを取得するための推奨される方法ではないことに気付きました。

Perl 5.8.8、CGI 3.20、および DBI 1.52 を使用しています。これを読んでいる人に事前に感謝します。

@Pi & @Bob、提案をありがとう。%in のスコープを事前に宣言しても効果はありません (私は常に strict を使用しています)。結果は前と同じです。データベースでは、col1 は null ですが、cols 2 と 3 は期待値に設定されています。

参考までに、ReadParse 関数を次に示します (以下を参照)。CGI.pmの標準機能です。私が理解しているように、関数はそれを処理するように見えるので、スコープを設定する目的で %in ハッシュを初期化するつもりはありません (strict を満たす以外)。

私の質問は、do() のコンテキスト内で %in ハッシュを取得する最良の方法は何だと思いますか? 再度、感謝します!これが、元の質問に追加情報を提供する正しい方法であることを願っています。

@Dan: &ReadParse 構文について聞いたことがあります。通常は CGI::ReadParse() を使用しますが、この場合は、CGI.pm ドキュメントに正確に記載されている方法に固執するのが最善であると考えました。

0 投票する
28 に答える
88478 参照

c# - 「catch」または「finally」のスコープで「try」で変数が宣言されないのはなぜですか?

C# および Java (場合によっては他の言語も) では、"try" ブロックで宣言された変数は、対応する "catch" ブロックまたは "finally" ブロックのスコープ内にありません。たとえば、次のコードはコンパイルされません。

このコードでは、catch ブロック内の s への参照でコンパイル時エラーが発生します。これは、s が try ブロック内でのみスコープ内にあるためです。(Java では、コンパイル エラーは「s を解決できません」です。C# では、「名前 's' は現在のコンテキストに存在しません」です。)

この問題の一般的な解決策は、try ブロック内ではなく、try ブロックの直前に変数を宣言することです。

ただし、少なくとも私にとっては、(1) これは不格好な解決策のように感じられ、(2) プログラマーが意図したよりも大きなスコープを持つ変数が発生します (メソッドのコンテキストだけではなく、メソッドの残りの部分全体)。 try-catch-finally)。

私の質問は、この言語設計の決定 (Java、C#、および/または他の適用可能な言語) の背後にある理論的根拠は何ですか?

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

sql-server - ストアドプロシージャで適切にスコープされたトランザクション

独自のトランザクションを管理するストアドプロシージャがあるとします。

このprocを既存のトランザクションから呼び出すと、procは外部トランザクションをロールバックできます。

ストアドプロシージャが外部トランザクションをロールバックしないように、ストアドプロシージャ内でトランザクションを適切にスコープするにはどうすればよいですか?

0 投票する
5 に答える
68053 参照

c# - コードを内部にしますが、他のプロジェクトからの単体テストに使用できるようにします

すべての単体テストを独自のプロジェクトに入れました。単体テストのためだけに、特定のクラスを internal ではなく public にする必要があることがわかりました。これを行う必要がないようにする方法はありますか。クラスを封印ではなく公開することによるメモリへの影響は何ですか?

0 投票する
86 に答える
1555124 参照

javascript - JavaScript クロージャーはどのように機能しますか?

JavaScript クロージャーを構成する概念 (関数、変数など) についての知識はあるが、クロージャー自体を理解していない人に、JavaScript クロージャーをどのように説明しますか?

ウィキペディアにあるスキームの例を見たことがありますが、残念ながら役に立ちませんでした。

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

python - Pythonでインポートされたクラスのスコープは何ですか?

あいまいなタイトルを失礼します。誰か提案があれば教えてください!また、より適切なタグでタグを付け直してください。

問題

インポートされたクラスのインスタンスが、インポーターのスコープ(グローバル、ローカル)内のものを表示できるようにしたい。ここで機能している正確なメカニズムがわからないため、単語よりもスニペットを使用して説明することができます。

次に、反復セッションからこのコードを実行します。NameErrors

この種のタスクに共通のイディオム/パターンはありますか?私は間違った木を完全に吠えていますか?

0 投票する
8 に答える
10187 参照

c - strcpy がグローバル変数でセグメンテーション違反を引き起こすのはなぜですか?

だから私はいくつかのCコードを持っています:

これは、見た目どおりにコンパイル、実行、および動作します。ただし、文字ポインターの一方または両方がグローバル変数として宣言されている場合、strcpy はセグメンテーション違反になります。なぜこれが起こるのですか?明らかに、スコープの理解に誤りがあります。