問題タブ [scoping]
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.
c++ - ネストされた FOR ループで同じカウント変数名を使用すると機能するのはなぜですか?
以下がエラーにならないのはなぜですか?
私が理解しているように、中括弧 ({...}) 内の変数は、これらの中括弧内でのみ有効です。しかし、内側のループは外側のループの中かっこの内側にあります。int i=0
内部ループを宣言するとすぐに、複数の定義に関するエラーが発生するのではないでしょうか?
perl - Perlサブルーチンが、それを呼び出したforeachループ内の変数の値を認識できないのはなぜですか?
これが私が間違っていることの簡単なことだといいのですが。「可変自殺」についてオンラインで見た目は良さそうですが、それは古いバージョンのもので、5.10.1を使用しています。
とにかく-私が宣言した変数-$RootDirectory-は突然その値を失い、その理由がわかりません。
問題を再現するためのスクリプトを次に示します。デバッグモード(perl -d)でスクリプトを実行すると、21行目と26行目で$ RootDirectoryを出力することができます。しかし、30行目で終わりました。
編集すべてのコメントをありがとう!今のところ、うまく機能しているように見える「our」キーワードを使用すると思います。Nathanに感謝します。また、使用警告についてのツールにも感謝します-私はそれで売られていると思います!
混乱し続けているのは、デバッグモード(perl -d)を実行し、コードをステップ実行して「p $ RootDirectory」を実行すると、21行目と26行目で期待どおりの出力が得られたが、30行目では得られなかった理由です。 30行目で状況は異なりますか?
また、関数パラメーターとして$RootDirectoryを渡すことであるベストプラクティスについてのコメントに感謝します。それに続く関数が非常に多いため、これを避けたかったのです。つまり、RunSchemaはSQLExecFolderを呼び出すCreateTablesを呼び出します。それらすべてに同じパラメータを渡す必要があります。この場合でもそれは理にかなっていますか、それともこれを構造化するためのより良い方法はありますか?
ruby - 最後の参照がスコープ外になったときにRubyオブジェクトが削除されないのはなぜですか?
Railsアプリでメモリリークを追跡しようとすると、奇妙な効果が見つかりました。誰かがここで何が起こっているのか説明できますか?
このスクリプトをプレーンなRubyスクリプトとして保存します(Railsは必要ありません)。
これを経由して実行すると
私は次のようになります:
変数fは範囲外ですが、単一のFnordオブジェクトへの参照は他になく、ガベージコレクションを実行しましたが、オブジェクトはまだ存在しているようです。これはある種の悪質なメモリリークですか、それともRubyについて何かが完全に欠けていますか?
さらに、テスト方法を次のように変更すると、次のようになります。
出力がありません。しかし、確かにこれはここでのセマンティクスを変更するべきではありませんか?
どうもありがとう!
r - Rで「<<-」(スコープの割り当て)をどのように使用しますか?
Rイントロでスコープについて読み終えたところですが、<<-
割り当てについて非常に興味があります。
マニュアルには、の1つの(非常に興味深い)例が示されていまし<<-
たが、私はそれを理解したと感じています。私がまだ見逃しているのは、これがいつ役立つかという文脈です。
ですから、私があなたから読みたいのは、いつの使用<<-
が面白く/役立つかについての例(または例へのリンク)です。それを使用することの危険性(追跡を失うのは簡単に見える)と、共有したいと思うかもしれないヒントは何ですか?
sql - SQL Server の派生テーブルの範囲
私は最近SQLを調べて、少し調べています。一時テーブルに関しては、3 つの異なる一時テーブル タイプを発見しました。
1) テーブルの作成 #TempTable
2) DECLARE TABLE @TempTable
3) SELECT * FROM (SELECT * FROM Customers) AS TempTable
#TempTable および @TempTable 型の背後にあるスコープは理解できましたが、例 3 のような派生テーブルはどうでしょうか。この派生テーブルはどこに格納されますか? 1 つのトランザクションで宣言されている場合、2 番目のトランザクションはそれにアクセスできますか、または派生テーブルのスコープは例 1 および 2 と同じですか?
perl - Perl モジュールでスコープはどのように機能しますか?
Perl モジュールでスコープがどのように機能するのかよくわかりません。これは何も印刷しません。a.pl を実行すると 1 が印刷されます。
午後
a.pl
reflection - なぜ私はメールのようなものをバインドできないのですか?インタプリタの起動に関するグローバルなコンテキストで?
R3 Alpha 99セッションを起動し、これを最初のコマンドとして入力すると、エラーが発生します。
email?
しかし、終了して再起動し、代わりにテストを実行して、プリミティブがオブジェクトのようなグローバルコンテキストに存在することを証明するとsystem
、テスト自体によってエイリアスが機能します。
何が起きてる?
c# - ラムダ変数のスコープ
例:
変数「s」はラムダで定義され、別の変数「s」は同じメソッド内のローカル変数として定義されます。最初の「s」にカーソルを合わせると、Visual Studio から「競合する変数が以下に定義されています」と表示されます。これらが矛盾するのはなぜですか。ラムダの「s」は、括弧の外では使用できませんか?
javascript - Javascriptでクロージャで定義された「クラス」を「拡張」できますか?
私は次のように定義されたJavascript「クラス」を持っています:
Welcomer
パブリックメソッドを再定義し、プライベートメソッドと変数にアクセスできるように「サブクラス化」する方法はありますか?以下では、パブリックメソッドにアクセスできますが、プライベートメソッドにはアクセスできません。
python - Python のスコープとスレッドに関する質問
queueStream (ここには示されていません) に挿入する 1 つのスレッドと、キューが空でない場合にキューからポップする別のスレッドである FlowController があります。
addToQueue() のデバッグ コードで、データが正しくキューに挿入されることを確認しました。
問題は、FlowController の「if queueStream」ステートメントが常に queueStream を空と見なし、代わりに else ステートメントに移動することです。
私は Python が初めてで、ある種の単純なスコープ規則が欠けていると感じています。「グローバルキューストリーム」を使用していますが、何もしていないようです。
助けてくれてありがとう。
編集::::::::::::
これまでご協力いただきありがとうございました。Queue のドキュメントは素晴らしく、get() 関数がブロックされて以来 (クール!)、よりクリーンなコードを書くのに役立ちました。とにかく、それでも私の問題は解決しませんでしたが、QueueStream インスタンスを FlowController に渡す前と後で印刷しましたが、2 つの異なるメモリ位置がありました。そのため、FlowController のキューから何もポップされていないと思います。これは、Python が queueStream を参照ではなく値で渡すということですか? もしそうなら、どうすればそれを回避できますか?