我最近有两次电话采访.
在两次采访中,我被问到是定义Lambda表达式的最后一个问题.
我声称Lambda表达式是一个未命名的方法来代替委托.但不知何故,这还不够.
我发现在电话采访中很难解释这一点.
有谁知道更好吗?
Ian*_*Ian 40
Lambda表达式是作为常量值给出的无名函数.它们可以出现在任何其他常量可能的任何位置,但通常作为参数写入其他函数.规范的例子是你将比较函数传递给通用的"排序"例程,而不是去定义整个函数(并引起词汇不连续性和名称空间污染)来描述这种比较,你可以传递描述比较的lambda表达式.
然而,这错过了Lambda表达式最重要的特性之一,即它们在外观的上下文中执行.因此,他们可以使用在该上下文中定义的变量的值.这将函数指针与真正的lambda表达式区分开来.在支持可变变量的语言中,正确的lambda表达式提供了更改这些变量值的能力.
Lambda表达式(使用不同的语法)出现在所有LISP,Perl,Python和C++,Objective C,C#和Java 8的最新版本中,但是特别是在C语言中,即使它有办法处理传递函数(或者他们的一些借口)作为参数.它们是具有特定语义的语法元素,并且这些语义对运行时的要求比C设计要求的要多.
And*_*ack 18
lambda表达式是无名的代码暂停.
考虑这个匿名的"乘以两个东西"函数(又名lambda表达式),使用一些非特定的表示法.
?(x, y) -> x * y
Run Code Online (Sandbox Code Playgroud)
你的答案非常特定于你曾经使用过lambdas的地方(我猜C#?),我怀疑面试官要求更一般的理解.委托的概念,语言C#和方法的概念都是次要的lambda是什么以及它们是如何工作的.例如,您可以在纸上使用lambda表达式进行计算,不涉及任何方法.
| 归档时间: |
|
| 查看次数: |
48082 次 |
| 最近记录: |