C# 或 Java 有 lambdas 的原因是什么?
C#或java有lambda的原因是什么?这两种语言都不是基于它们,它似乎是另一种编码方法,可以执行与C#已经执行的相同操作。
我不是在对抗,如果有原因,我想知道原因。为了充分披露,我是一个Java程序员,背景C++,没有lisp经验,我可能只是错过了重点。
C#或java有lambda的原因是什么?这两种语言都不是基于它们,它似乎是另一种编码方法,可以执行与C#已经执行的相同操作。
我不是在对抗,如果有原因,我想知道原因。为了充分披露,我是一个Java程序员,背景C++,没有lisp经验,我可能只是错过了重点。
有些常见的用例需要传递(或存储)一个代码块,以便稍后执行。最常见的是事件侦听器。信不信由你,下面的代码在Java中使用了lambda-ish结构:
JButton button = new JButton("Push me!");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Pressed!");
}
});
匿名内部类充当 lambda,尽管是一个非常冗长的函数。通过一点点隐式转换的魔力,我们可以在Scala中编写以下等效项:
val button = new JButton("Push me!")
button.addActionListener { e =>
println("Pressed!")
}
C#使这种事情变得相当容易委托和(甚至更好)lambdas。
我认为 C# 中的 lambdas 是执行委托的一个非常方便的捷径。将代码放在使用它的地方,而不是必须在其他地方搜索委托定义,这样可读性要高得多。