首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么C#或Java会有lambda呢?

为什么C#或Java会有lambda呢?
EN

Stack Overflow用户
提问于 2008-10-16 18:56:11
回答 8查看 6.1K关注 0票数 18

C#或java拥有lambda的原因是什么?这两种语言都不是基于它们的,它似乎是另一种编码方法,可以做C#已经做过的事情。

我不是在对抗,如果有什么原因,我想知道原因。出于完全公开的目的,我是一名具有C++背景的Java程序员,没有lisp经验,我可能没有抓住要点。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-10-16 19:02:48

有一些常见的用例需要传递(或存储)一个稍后要执行的代码块。最常见的是事件侦听器。信不信由你,下面这段代码使用了Java中的lambda-ish结构:

代码语言:javascript
复制
JButton button = new JButton("Push me!");
button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println("Pressed!");
    }
});

匿名内部类充当了一个lambda,尽管它非常冗长。使用一点隐式转换魔术,我们可以在Scala中编写以下等效项:

代码语言:javascript
复制
val button = new JButton("Push me!")
button.addActionListener { e =>
  println("Pressed!")
}

C#使用委托和(甚至更好的)lambda使这类事情变得相当容易。

票数 39
EN

Stack Overflow用户

发布于 2008-10-16 18:57:37

我认为C#中的lambdas是进行委托的一个非常方便的捷径。将代码放在使用它的地方,而不是必须在其他地方搜索委托定义,可读性更好。

票数 9
EN

Stack Overflow用户

发布于 2008-10-16 19:03:14

语法糖。

它提供了一种方便和更具可读性的方式来表示一个想法,在本例中是一个很小的丢弃方法。在幕后,编译器将其扩展为委托和方法调用,但这是做工作的事情,而不是你。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/209804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档