匿名函数的用处

时间:2009-07-11 03:35:45

标签: lambda anonymous-function

为什么不编写匿名函数内容而不是匿名函数和匿名函数内容?

7 个答案:

答案 0 :(得分:7)

因为您没有编写匿名函数,所以请立即调用它。它通常传递给其他一些用它做事的函数(例如使用匿名函数将数组映射到另一个数组)。

答案 1 :(得分:2)

它们通常用于回调。您不能只编写内容,因为您的代码不会直接执行它。

答案 2 :(得分: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)

通过使用lambda,我不需要在模块名称空间中为一个多项式(x ^ 2 + 2x + 3)创建一个函数。

有许多方面它们派上用场,特别是在函数式编程中(例如查找闭包或currying)。

答案 3 :(得分:0)

它就是为了让你不必创建一个基本上没用的函数包装器。

答案 4 :(得分:0)

它们的存在是因为很多时候你想要使用表达式语法来获得方法语义。

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

我不想打扰一个检查整数是否大于3的新方法谓词。我想要一个方法的含义,我只能放一个表达式。匿名函数让我有两个。活泉! :)

答案 5 :(得分:0)

如果你问“为什么要使用lambda表达式?”,那么有几个答案。例如,lambda表达式(简写)通常比完全匿名函数(即使用delegate()术语)或完整的函数和委托更加冗长的替代方法更易于阅读和理解。 Lambda表达式也非常适合执行简短,“简单”的计算(即对一组输入的简单数学),这在软件编程中非常频繁。

Lambda表达式是一个功能强大的工具,可以帮助提高代码的表现力,简单性和可读性。

答案 6 :(得分:0)

我不知道这是否适用,因为它特定于Javascript并且我没有看到Javascript标记,但是......创建+同时调用匿名函数并不罕见。这通常是为了保护可变污染的全球范围。

var x = 1;
(function(){        
    var x = 2;
})();
x == 1;