問題タブ [closures]
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.
javascript - Javascriptクロージャと「これ」
作成したオブジェクトに問題があり、次のようになります。
問題は、「DoSomething」関数内にいるときに、「this」が「myObject」を参照していないことです。何が間違っているのでしょうか。
javascript - jQuery のクロージャ、ループ、およびイベント
ここに似た質問があります: Javascript ループ内のイベント ハンドラー - クロージャーが必要ですか? しかし、私はjQueryを使用しており、指定されたソリューションは、クリックではなくバインドされたときにイベントを発生させるようです。
これが私のコードです:
私は成功せずにいくつかの異なる方法を試しました...
元の問題は、適切な画像を選択するためにパラメーターではなくループ カウンターを使用していたため、_this.Indicator.TrueImage が常に最後の値になることでした。
closures - クロージャとカリー化の違いと考えられる類似点は何ですか?
クロージャとカリー化についての投稿をいくつか読んだのですが、答えが見つからなかったような気がします。では、クロージャとカリー化の違いと、おそらく類似点は何ですか?助けてくれてありがとう :)
python - Python でクロージャのバインドされた変数を変更する
クロージャー内の変数の 1 つのバインドされた値を変更する方法はありますか? 例を見て理解を深めてください。
java - Javaで反映されたメソッドの戻り型とパラメーターを検証する
クロージャがない場合に、Javaの(プリミティブ)コールバック機能を提供する汎用のCallbackオブジェクトがあります。Callbackオブジェクトにはメソッドが含まれており、メソッド内の同等のメソッドに委任するだけの2つのアクセサーメソッドを介して、メソッドのパラメーターと戻り値のタイプを返します。
提供されたコールバックが有効なメソッドを指していることを検証しようとしています。Numberと互換性のある戻り型の割り当てと、Doubleと互換性のある割り当てであるすべてのパラメーターが必要です。私の検証方法は次のようになります。
私が遭遇する問題は、たとえばMath.abs()でこれを試してみると、次のように戻り型の例外がスローされることです。
これは、プリミティブが(a)ラッパークラスを使用して反映され、(b)Double.TYPEがClass <Double>型であると宣言されているため、プリミティブが単純に機能することを期待していたため、私には驚きました。
チェックを変更せずにこれを達成する方法を誰かが知っていますか?
明確化
double abs(double)
Method.invoke()を使用してメソッドを呼び出すときは、Object [] {Double}を渡して、Doubleを返します。ただし、Double.TYPEをDoubleに割り当てることができないため、検証が失敗しているように見えます。これらすべてのコールバックで、invoke()によって数値として返されるある種の数値を返す必要があるため、提供されたメソッドが数値または数値プリミティブのいずれかを返すことを検証しようとしています。
parmsの検証も同様です。
つまり、リフレクションを使用する場合、parmタイプとreturnタイプのDoubleとdoubleは同じであり、そのように簡単に検証したいと思います。
編集:さらに明確にするために:invoke()が呼び出されたときに、メソッドがNumber型のオブジェクトを返すことを検証したいと思います(そこからobj.doubleValue()を呼び出して必要なdoubleを取得できます)。
php - クラスメンバーとしての閉鎖?
私は、クロージャーを介して機能を拡張する jQuery/Javascript の方法を気に入っています。PHP 5.3で同様のことを行うことは可能ですか?
[編集] 私の質問で「それ」と「である」を混同しました。へー。
アップデート
5.3a3 をダウンロードしましたが、動作します。
ruby - ruby:ブロックはメソッドのローカル変数に影響を与えることができますか?
私はただルビーを学び、ブロックで実行されるコードの範囲を理解しようとしています。たとえば、次のように、アタッチされているメソッドに影響を与えるブロックを作成できるようにしたいです。
この場合、ブロックを変更する必要はまったくありません。単純な変数参照を使用し、パラメーターを使用せずにブロックを記述できるようにしたいのです。上記の例の「test」メソッドに変更を加えるだけで、ブロックで定義された変数にアクセスできますか?
繰り返しますが、目標はブロックを変更せずに残すことですが、ブロックの実行後に「test」内から作成された変数にアクセスできるようにすることです。
flash - ActionScript 3 (AS3) でのクロージャの問題を修正する方法
以下のコードでは、いくつかの画像をロードして、個別にロードされるとすぐにステージに配置しようとしています。しかし、最後の画像しか表示されないのでバグがあります。閉鎖の問題だと思います。どうすれば修正できますか?AS3 のクロージャの動作は Java Script と同じではありませんか?
c# - ラムダクロージャまたはクラスレベル変数?
ベストプラクティスとは何かについての一般的な質問:
x
ラムダ イベント ハンドラ内で変数を使用していることに注意してください。
また:
ここでx
は、クラスのプライベート メンバーであるため、イベント ハンドラーでアクセスできます。
x
ここで、(何らかの理由で) コードの他の場所は必要ないとしましょう。どの方法がより良い方法でしょうか?
apache-flex - AS3でカスタムMouseEvent.CLICKイベントを作成する方法(パラメータを関数に渡す)?
この質問は、MouseEvent.CLICK イベント タイプだけに関連するものではなく、AS3 に既に存在するすべてのイベント タイプに関連しています。カスタム イベントについてはよく読みましたが、これまで自分がやりたいことを実行する方法がわかりませんでした。説明しようと思います。ご理解いただければ幸いです。
これが私の状況の実例です:
しかし、 someVarをパラメーターとしてdoSomethingに渡すことができるようにしたいと考えています。だから私はこれを試しました:
この種の作品は期待どおりではありません。関数クロージャーにより、MouseEvent.CLICK イベントが実際に発生したとき、forループはすでに終了しており、someVarは最後の値 (例では9 ) を保持しています。したがって、各ムービー クリップ内でクリックするたびに、パラメータとして9を渡してdoSomethingが呼び出されます。そして、それは私が望むものではありません。
カスタム イベントを作成すればうまくいくはずだと思いましたが、MouseEvent.CLICK イベントが発生したときにカスタム イベントを発生させてパラメータを渡す方法が見つかりませんでした。今はそれが正しい答えかどうかわかりません。
どうすればいいですか?