問題タブ [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 に答える
4935 参照

object - クロージャーとオブジェクト

関数型プログラミングは..古典的なものです(マーク・トウェインのタイプ)。SICP に関する別の記事を読んでいるときに、人々が閉鎖がそこでの思考に与えた大きな影響について話しているときに、私はこれを思い出しました。

クロージャーは貧乏人のオブジェクト オブジェクトは貧乏人のクロージャー

(正確なソースを思い出すことはできませんが、それはプログラマーのロゼッタストーン、またはプログラミングの禅、またはプログラミングのタウでした... Googleは非常に混雑しているため、元のソースにアクセスできません)

それで、共同プログラマー...あなたの見解は...あなたがいつも見逃していたクロージャーです..または、プリプロセッサーができる構文糖衣です!!

0 投票する
7 に答える
11890 参照

c# - foreach 識別子とクロージャ

次の 2 つのスニペットで、最初のスニペットは安全ですか、それとも 2 番目のスニペットを実行する必要がありますか?

安全とは、各スレッドが、スレッドが作成されたのと同じループ反復から Foo のメソッドを呼び出すことが保証されていることを意味しますか?

それとも、新しい変数「ローカル」への参照をループの各反復にコピーする必要がありますか?

-

更新: Jon Skeet の回答で指摘されているように、これは特にスレッド化とは関係ありません。

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

javascript - Javascript クロージャーはどこで定義すればよいですか?

私は独自の JavaScript 配列のようなオブジェクトを作成しており、クロージャを呼び出すメソッドがあります。クロージャーを定義するのに最も効率的な場所はどこだろうと思っていました。

たとえば、マップ関数とチョップ関数があるとします。

代わりにこれを行う方が効率的ですか?

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

groovy - Groovy のクロージャ パラメータのデフォルト値

Groovyのクロージャでデフォルトのパラメータ値を使用する方法はありますか?

これは私がこれまでに試したことです:

次の結果が得られます。

への呼び出しがsalute2()敬礼のデフォルト値を無視しているようです"Hola"

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

c# - これはまだ閉鎖ですか?

testit() メソッドはクロージャです。aString は範囲外ですが、testit() は引き続き実行できます。testit2() は、スコープ (mystring) から外れていないが、testit2() にも渡されていない変数を使用しています。testit2() は閉鎖と見なされますか?

2 番目の例では、mystring はメソッドの外部で更新でき、それらの変更は testit2() に反映されます。これは、mystring をパラメーターとしてキャプチャすることしかできない通常の方法とは異なります。

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

python - Pythonはレキシカルクロージャをシリアライズしますか?

標準ライブラリを使用して Python でレキシカル クロージャをシリアル化する方法はありますか? pickle と marshal は、レキシカル クロージャーでは機能しないようです。バイナリと文字列のシリアル化などの詳細についてはあまり気にしません。機能する必要があります。例えば:

クロージャーのインスタンスをファイルにダンプして、それらを読み戻せるようにしたいのです。

編集:これを解決できる比較的明白な方法の1つは、レキシカルクロージャをクラスオブジェクトに、またはその逆に変換するリフレクションハックを使用することです。その後、クラスに変換し、シリアライズ、アンシリアライズし、クロージャーに戻すことができます。Python がダック タイプであることを考えると、クラスの関数呼び出し演算子をオーバーロードして関数のように見せれば、実際にはそれをクロージャーに戻す必要さえなく、それを使用するコードは認識しません。違い。Python リフレクション API の専門家がいる場合は、声を上げてください。

0 投票する
7 に答える
6647 参照

emacs - Emacs Lisp でクロージャを行うにはどうすればよいですか?

1 つの定数値を返す関数をオンザフライで作成しようとしています。

JavaScript やその他の最新の命令型言語では、クロージャーを使用します。

しかし、Emacs Lisp はそれらをサポートしていません。

恒等関数と部分関数のアプリケーションを組み合わせて作成できますが、どちらもサポートされていません。

では、どうすればいいですか?