タグ付けされた質問 「scope」

スコープは、値と式が関連付けられている囲みコンテキストです。このタグは、さまざまな種類のスコープに関する質問や、スコープが明確でない可能性がある質問に使用します。

8
ifステートメントで初期化された変数のスコープは何ですか?
私はPythonを初めて使用するので、これはおそらく簡単なスコープの質問です。Pythonファイル(モジュール)の次のコードは、少し混乱しています。 if __name__ == '__main__': x = 1 print x x変数はifステートメントに対してローカルであり、その外部に存在してはならないため、私が使用していた他の言語では、このコードは例外をスローします。しかし、このコードは実行され、1が出力されます。誰でもこの動作を説明できますか?モジュールで作成されたすべての変数は、モジュール全体に対してグローバル/使用可能ですか?

10
内部クラスでパブリックメソッドを使用する理由
私たちのプロジェクトの1つには、次のようなコードがたくさんあります。 internal static class Extensions { public static string AddFoo(this string s) { if (s == null) { return "Foo"; } return $({s}Foo); } } 「型を後で公開する方が簡単です」以外に、これを行う明確な理由はありますか? 私はそれが非常に奇妙なエッジケース(Silverlightでの反映)でのみ重要であるか、まったく重要でないと思います。
250 c#  scope  public  internals 

6
JavaScriptのプロパティおよびメソッド名の下線プレフィックス
JavaScriptの下線プレフィックスは、たとえばPythonのプライベートクラスメソッドのように、単なる規則ですか? 2.7 Pythonドキュメントから: オブジェクトの内部以外からアクセスできない「プライベート」インスタンス変数は、Pythonには存在しません。ただし、ほとんどのPythonコードが従う規則があります。アンダースコアで始まる名前(_spamなど)は、APIの非公開部分として処理する必要があります(関数、メソッド、データメンバーのいずれであっても) 。 これはJavaScriptにも適用されますか? たとえば、次のJavaScriptコードを見てください。 function AltTabPopup() { this._init(); } AltTabPopup.prototype = { _init : function() { ... } } また、アンダースコアの接頭辞付き変数が使用されます。 ... this._currentApp = 0; this._currentWindow = -1; this._thumbnailTimeoutId = 0; this._motionTimeoutId = 0; ... 慣習のみ?または、アンダースコアのプレフィックスの後ろにもっとありますか? 私の質問はこの質問と非常に似ていますが、JavaScriptの下線プレフィックスの重要性について賢くすることはできませんでした。


9
MATLABでファイルごとに複数の関数を定義し、そのファイルの外部からそれらにアクセスすることは可能ですか?
私がEEで学士号を取得するために勉強していたとき、MATLABでは、たとえそれが1行であったとしても、MATLABでは各関数を独自のファイルで定義する必要がありました。 現在、大学院の学位を取得しています。MATLABでプロジェクトを作成する必要があります。これは、MATLABの新しいバージョンの要件ですか? ファイルに複数の関数を含めることができる場合、これに制限はありますか?たとえば、ファイル内のすべての関数にファイルの外部からアクセスできますか、それともファイルと同じ名前の関数のみにアクセスできますか? 注:私は、MATLABリリースR2007bを使用しています。

5
thisコンテキストを関数に渡すにはどうすればよいですか?
これは簡単にグーグルできるものだと思いましたが、おそらく私は正しい質問をしていません... 特定のJavaScript関数で「this」が参照するものを設定するにはどうすればよいですか? たとえば、次のようなjQueryのほとんどの関数と同様です。 $(selector).each(function() { //$(this) gives me access to whatever selector we're on }); 呼び出されたときに適切な「this」参照を持つ独自のスタンドアロン関数を作成/呼び出すにはどうすればよいですか?私はjQueryを使用しているので、jQuery固有の方法がある場合はそれが理想的です。
213 javascript  jquery  scope  this 

12
最初の使用後に再割り当てされたときのローカル変数のUnboundLocalError
次のコードは、Python 2.5と3.0の両方で期待どおりに機能します。 a, b, c = (1, 2, 3) print(a, b, c) def test(): print(a) print(b) print(c) # (A) #c+=1 # (B) test() ただし、行(B)のコメントを外すと、UnboundLocalError: 'c' not assignedat行(A)になります。aおよびの値はb正しく印刷されます。これには、2つの理由で完全に困惑します。 行(B)の後のステートメントが原因で、行(A)で実行時エラーがスローされるのはなぜですか? エラーが発生するのに、なぜ変数aとb期待どおりに出力されるのcですか? 私が思いつくことができる唯一の説明は、ローカル変数cが割り当てによって作成されるということですc+=1。これはc、ローカル変数が作成される前であっても、「グローバル」変数よりも優先されます。もちろん、変数が存在する前にスコープを「盗む」ことは意味がありません。 誰かがこの動作を説明できますか?
208 python  variables  scope 


3
Handlebars.jsの各ループのスコープ外の変数にアクセスする
次のように、handlebars.jsテンプレートがあります。 {{externalValue}} <select name="test"> {{#each myCollection}} <option value="{{id}}">{{title}} {{externalValue}}</option> {{/each}} </select> そして、これは生成された出力です: myExternalValue <select name="test"> <option value="1">First element </option> <option value="2">Second element </option> <option value="3">Third element </option> </select> 予想通り、のすべての要素のidおよびtitleフィールドにアクセスしてmyCollection、selectを生成できます。そして、selectの外では、externalValue変数が正しく出力されます( "myExternalValue")。 残念ながら、オプションのテキストでexternalValueは、値は出力されません。 私の質問は、ループ内からそれぞれhandlebars.jsのスコープ外の変数にアクセスするにはどうすればよいですか?

7
whileループ内で変更された変数は記憶されません
次のプログラムで$fooは、最初のifステートメント内で変数に値1 を設定すると、ifステートメントの後にその値が記憶されるという意味で機能します。ただし、同じ変数をステートメントif内の内の値2に設定するとwhile、whileループの後で忘れられます。ループ$foo内で変数のある種のコピーを使用していて、whileその特定のコピーのみを変更しているように動作しています。ここに完全なテストプログラムがあります: #!/bin/bash set -e set -u foo=0 bar="hello" if [[ "$bar" == "hello" ]] then foo=1 echo "Setting \$foo to 1: $foo" fi echo "Variable \$foo after if statement: $foo" lines="first line\nsecond line\nthird line" echo -e $lines | while read line do if [[ "$line" == "second line" ]] …
187 bash  while-loop  scope  sh 

8
var self = this?
イベントハンドラのコールバックがの範囲に変更とインスタンスメソッドを使用してthisから、「マイインスタンス」と「ただのコールバックと呼ばれるものは何でもします」。だから私のコードはこのようになります function MyObject() { this.doSomething = function() { ... } var self = this $('#foobar').bind('click', function(){ self.doSomethng() // this.doSomething() would not work here }) } 機能しますが、それが最善の方法ですか?それは私には奇妙に見えます。


6
Pythonの「for」ループでのスコープ
Pythonのスコープ規則については質問していません。Pythonのループでスコープがどのように機能するか一般的に理解しています。私の質問は、なぜ設計の決定がこのように行われたのかです。例(しゃれは意図されていません): for foo in xrange(10): bar = 2 print(foo, bar) 上記は(9,2)を出力します。 これは奇妙なことに私を襲います: 'foo'は実際にはループを制御するだけであり、 'bar'はループ内で定義されました。ループの外で「bar」にアクセスできる必要がある理由を理解できます(そうしないと、forループの機能が非常に制限されます)。私が理解していないのは、ループの終了後も制御変数がスコープ内に留まる必要がある理由です。私の経験では、グローバルな名前空間が乱雑になり、他の言語のインタープリターがキャッチするエラーを追跡することが難しくなります。
177 python  scope 

5
クラス定義のリスト内包からクラス変数にアクセスする
クラス定義内のリスト内包から他のクラス変数にどのようにアクセスしますか?以下はPython 2では機能しますが、Python 3では失敗します。 class Foo: x = 5 y = [x for i in range(1)] Python 3.2はエラーを出します: NameError: global name 'x' is not defined 試しFoo.xてもうまくいきません。Python 3でこれを行う方法に関するアイデアはありますか? やや複雑な動機付けの例: from collections import namedtuple class StateDatabase: State = namedtuple('State', ['name', 'capital']) db = [State(*args) for args in [ ['Alabama', 'Montgomery'], ['Alaska', 'Juneau'], # …

3
参照:変数スコープとは何ですか?どの変数にどこからアクセスできますか?「未定義の変数」エラーとは何ですか?
注:これは、PHPで変数スコープを処理するための参照質問です。このパターンの複製として、このパターンに当てはまる多くの質問のいずれかを閉じてください。 PHPの「変数スコープ」とは何ですか?ある.phpファイルの変数は別の.phpファイルからアクセスできますか?なぜ「未定義の変数」エラーが発生するのですか?
167 php  scope 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.