当前位置:  开发笔记 > 编程语言 > 正文

有什么理由让C#或Java有lambda?

如何解决《有什么理由让C#或Java有lambda?》经验,为你挑选了2个好方法。

有什么理由让C#或java有lambda?这两种语言都不是基于它们,它似乎是另一种编码方法来做同样的事情,而C#已经做了.
我不是对抗性的,如果有理由我想知道原因.出于完全公开的目的,我是一名具有C++背景且没有lisp经验的Java程序员,我可能只是忽略了这一点.



1> Daniel Spiew..:

有一些常见的用例需要传递(或存储)稍后要执行的代码块.最常见的是事件监听器.信不信由你,下面的代码使用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!")
}

对于代理人和(甚至更好的)lambda,C#使这种事情变得相当容易.


实际上,根据我的经验,lambda丰富的代码比没有lambdas编写的等效代码更容易调试.一旦你了解它们,它们就非常直观,并且明智地使用它们可以减少批量(这显然有助于任何与代码相关的任务,包括调试).

2> tvanfosson..:

我认为C#中的lambdas是一个非常方便的快捷方式.将代码放在正在使用的位置,而不是在别处搜索委托定义,更具可读性.


@johnstok - 指出这一点有点晚了,但那篇文章说它们只是与C#编译器(该博客的作者是)的实现者的观点不同.
推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有