|
|
1
16
请看一看 closures .
这些是在其他函数中创建的,因此可以访问该函数的范围。即使将异常函数指定给在调用原始函数后调用的函数参数,情况也是如此。(稍后我将创建一个示例)。
上述方法将两个匿名函数分配给字段F1和F2。第一种方法增加局部变量,第二种方法显示变量的值。
现在可以调用这两个函数,它们访问相同的a。因此,两次调用F1和一次调用F2显示为3。 当然,这是一个简单的例子。但它可以扩展为更有用的代码。 在多线程环境中,可以在调用同步时使用匿名函数,从而消除了对无数方法的需要。 |
|
|
2
12
试想一下典型的回调代码,其中需要有回调可用的数据。回调通常需要这些数据 只有 匿名方法还有其他方面,最明显的事实是,它们是匿名的,但这正是让它们为我“点击”的原因。。。 |
|
|
3
11
|
|
|
4
5
人们已经提供了代码,所以我只列出一些它们有用的地方。 假设您有一些GUI代码。通常,对于按钮的onclick处理程序,您必须提供一个在单击该按钮时调用的函数。但是,假设该函数只需要做一些简单的事情,比如弹出一个消息框或在某处设置一个字段。假设在代码中有几十个这样的按钮。如果没有匿名函数,您将不得不拥有大量名为“OnButton1Click”、“OnExitButtonClick”等的函数,这些函数可能会使代码变得混乱。。。或者,您可以创建立即附加到这些事件的匿名函数,而不必再担心它们。
另一个用途是函数式编程。假设你有一个数字列表。你只想得到那些可以被3整除的数字。可能有一个函数名为
被迫定义一个函数“IsDivisible By Three”,然后将其传递给filter,这会很烦人,因此匿名函数的另一个用途是快速创建一个在其他任何地方都不需要的函数,然后将其传递给filter。 |
|
|
5
5
我在回答我自己的问题,但是我在这里找到了匿名方法的一个很好的解释 Can your programming language do this? |
|
|
6
1
我猜(我不知道Delphi)这意味着现在可以将函数创建为一种数据对象。例如,这意味着您可以将函数作为参数传递给其他函数。示例:排序函数可能将比较函数作为参数,因此用途更广。 |
|
|
7
1
匿名方法在函数式编程中很有用,但它们也可以帮助您在结构化编程中编写更紧凑的代码。线程,例如: http://blogs.codegear.com/abauer/2008/09/08/38868 http://delphi.fosdal.com/2008/08/anonymous-methods-when-to-use-them.html |