1

匿名関数と匿名関数の内容の代わりに、匿名関数の内容のみを記述しないのはなぜですか?

4

7 に答える 7

7

匿名関数を作成しないため、すぐに呼び出します。通常、それを処理する他の関数に渡されます (たとえば、無名関数を使用して配列を別の配列にマップします)。

于 2009-07-11T03:39:11.543 に答える
2

これらは通常、コールバックに使用されます。コードはコンテンツを直接実行しないため、コンテンツを書き込むことはできません。

于 2009-07-11T04:01:03.590 に答える
1

おそらく最大の用途は、他では使用されないか、オンデマンドで動的に作成する必要がある 1 回限りの関数です。そうすれば、名前空間を「汚染」する必要がなくなります。

たとえば、Python では次のようになります。

x_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y_values = map(lambda x: x**x + 2x + 3, x_values)

ラムダを使用することで、1 つの多項式 (x^2 + 2x + 3) のためだけにモジュールの名前空間に関数を作成する必要がなくなります。

特に関数型プログラミング (ルックアップ クロージャやカリー化など) では、これらが役立つ領域が数多くあります。

于 2009-07-11T03:39:40.890 に答える
0

Javascriptに固有のものであり、Javascriptタグが表示されないため、これが当てはまるかどうかはわかりませんが....無名関数を一度に作成して呼び出すことは珍しくありません。多くの場合、地球規模の範囲を変動する汚染から保護するために行われます。

var x = 1;
(function(){        
    var x = 2;
})();
x == 1;
于 2009-07-11T08:01:11.593 に答える
0

「なぜラムダ式を使用するのですか?」という質問には、いくつかの答えがあります。1 つには、省略形であるラムダ式は通常、完全な無名関数 (つまり、delegate() 項を使用) のはるかに冗長な代替物、または本格的な関数とデリゲートよりも読みやすく理解しやすいです。ラムダ式は、ソフトウェア プログラミングで非常に頻繁に使用される、短く単純な「表現力のある」計算 (つまり、一連の入力に対する単純な数学) の実行にも理想的です。

ラムダ式は、コードの表現力、単純さ、読みやすさを向上させるのに役立つ強力なツールです。

于 2009-07-11T03:42:13.910 に答える
0

本質的に役に立たない関数ラッパーを作成する必要がないようにするためです。

于 2009-07-11T03:38:01.017 に答える
0

それらが存在するのは、式の構文を使用したメソッドのセマンティクスが必要な場合が多いためです。

var l = new List<int>() { 1, 2, 3, 4, 5 };
var a = l.Where( i => i > 3 );  // a = 4, 5

整数が 3 より大きいかどうかをチェックする新しいメソッド述語をわざわざ書きたくありませんでした。式しか入れられないメソッドの意味が欲しい。匿名関数を使用すると、両方を使用できます。ウット!:)

于 2009-07-11T03:41:41.603 に答える