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

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

java - class(java)とclosure(javascript)の違いは?

クロージャがクラスよりも強力であることがわかりません。クラスを使用して、クロージャと同じ動作を実現できるようです。どんな助けでもいただければ幸いです

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

groovy - Groovy: クロージャ内の「this」の意味

次の例は、「Groovy in Action」から改作されています

この本によると、クロージャー内の値はthis最も外側のスコープ (つまり、julia宣言されているスコープ) です。私はそれを仮定するのは正しいですか

  • thisクロージャーの内側は、クロージャーが呼び出されたスコープに評価されますか?
  • 上記のクロージャ内で、同じスコープthisを参照しますか?caller

ありがとう、ドン

0 投票する
3 に答える
6195 参照

groovy - Groovy でクロージャーを使用してインターフェイスを実装する - どのメソッドが呼び出されましたか?

groovy には、単一のクロージャーで Interface を実装するイディオムがあります。クロージャーは、渡された引数を処理できるように準備する必要があります。それはうまくいきます。しかし、インターフェイスで呼び出されたメソッドをどのように判断するのでしょうか?

引数は利用可能ですが、呼び出されたメソッドの名前は - どうやら - ではありません。何か不足していますか?

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

programming-languages - なぜ高次手続きなのか?

したがって、言語が高次の手続きを提供する場合、手続きを返す手続きを使用できます。何かのようなもの:

新しい手順を作成するには、次のようにします。

Proc同様のタスクは、次のように、3 つの引数ではなく 4 つの引数を取る定義を定義し、このプロシージャを呼び出して定義することにより、高次プロシージャをサポートしない言語で実行できますProcA

では、なぜ高階手続きについてそれほど曖昧なのか? 何か不足していますか?

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

javascript - jQuery、ホバーメソッド、クロージャー

関数スコープの周りに脳を包み込もうとしてしばらくの間Javascriptクロージャに苦労してきましたが、代わりにそれらが私の周りを包み込んでいると思います。私はいくつかの投稿を見てきましたが(Nymanのものが最も役に立ちました)、明らかにまだそれを取得していません。jQueryのhoverメソッドでループを実行しようとしています。それぞれ複数のアクションを最終的にトリガーするにはホバー関数が必要ですが、今のところ、それぞれ1つの画像スワップで機能させることができれば幸いです。

別のjQuery投稿からのスコープに無名関数を使用するというアイデアを試しました。正常に機能しているように見えますが、最初のホバー関数の配列値に未定義がスローされます。これは内部関数であるためだと思います(ハードコードされた画像ソースはそこで正しく機能します)。

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

jquery - ロードイベントからのコールバックの新しい要素ごとに異なるIDを設定します

私の元の質問を編集しました

問題は、新しく追加された要素からidを設定する場合、または関数から引数noteidを使用する場合でも同じです。その結果、この関数がループした場合、すべての要素が同じIDを取得します。

新しく追加された要素ごとに異なるIDを設定するにはどうすればよいですか?

現在のように、submitイベントの値はすべての要素で同じです。この関数をループしてデータベースエントリに基づいて複数のメモを作成する必要がある場合、最後に追加されたメモIDのみが記憶され、すべての要素が同じIDを使用します。

ページを表示するとどうなるかを確認できます 。最初に、矢印の付いたアイコンをクリックして2つのメモのように作成する必要があります。次に、一番上のメモを削除してから、ページを更新します。2番目のものが削除されていることがわかります。

ありがとう、リチャード

0 投票する
26 に答える
574060 参照

python - ラムダはどのように役立ちますか?

Pythonラムダを理解しようとしています。lambda実生活で忘れてはならない「おもしろい」言葉のひとつですか?

それが必要になるかもしれないいくつかのエッジケースがあると確信していますが、それが曖昧であることを考えると、将来のリリースで再定義される可能性(さまざまな定義に基づく私の仮定)とコーディングの明確さの低下-避けられますか?

これは、C型のオーバーフロー(バッファオーバーフロー)を思い出させます-最上位の変数を指し、他のフィールド値を設定するためにオーバーロードします。それは一種の技術的なショーマンシップのように感じますが、メンテナンスコーダーの悪夢です。

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

lua - ルアでクロージャーを取得する方法は?

以下の行を含む「test.lua」というファイル名があるとします。

loadstring はグローバル環境で処理を行っているため、f_generate()() を呼び出すと、「グローバル 'f' (nil 値) を呼び出そうとしています」というエラーが表示されます。

コメントアウトされたコードは、関数環境がこの問題に対処できないことを示しています。

原因テーブルは lua の唯一のデータ構造です (そして、関数環境と他の多くのものはテーブルによって実装されます)、クロージャーもテーブルによって実装されると仮定するのは合理的だと思いますが、どうすれば取得できますか?