代码之家  ›  专栏  ›  技术社区  ›  WolfmanDragon

C#或Java拥有lambdas的原因是什么?

  •  18
  • WolfmanDragon  · 技术社区  · 16 年前


    8 回复  |  直到 16 年前
        1
  •  39
  •   Daniel Spiewak    16 年前

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

    JButton button = new JButton("Push me!");
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.out.println("Pressed!");
        }
    });
    

    val button = new JButton("Push me!")
    button.addActionListener { e =>
      println("Pressed!")
    }
    

        2
  •  9
  •   tvanfosson    16 年前

    我认为C#中的lambdas是完成委托的一条非常方便的捷径。将代码放在使用它的地方比在别处搜索委托定义更具可读性。

        3
  •  4
  •   Bob King    16 年前

    语法糖。

        4
  •  2
  •   johnstok    16 年前

    Lambdas允许您编写更少冗长、更具表现力的代码。例如 list comprehensions ...

    顺便说一句,目前正在探索向Java添加闭包的可能性,同时有必要使用匿名类(丑陋)。

        5
  •  1
  •   yfeldblum    16 年前

    C#并不是为某一特定的语言设计流派追求纯粹性(不像Java,Java是由Smalltalker设计的纯OO语言)。C#对所有人来说都是千方百计的,而且非常擅长。C#的基础是将各种编程风格的精华汇集到一种高质量、支持良好的语言中。这包括过程式、面向对象、函数式、动态、逻辑等编程风格。显然,到目前为止,它还没有太多的动态或逻辑编程风格,但很快就会出现(C#4.0附带的动态编程)。

        6
  •  1
  •   Nemanja Trifunovic    16 年前

    对于C#,lambda在内部用于实现LINQ。见文章 The Evolution Of LINQ And Its Impact On The Design Of C#

        7
  •  0
  •   Raindog    16 年前

    LAMBDA允许更多的可读代码,因为它们允许操作被定义为更接近使用点,而不是像当前的C++方法使用的函数对象,其定义有时远未使用。(这不包括一些boost库)。我认为lambdas的关键点在于,它们允许更简洁、更易于理解的代码。

        8
  •  -2
  •   pkiulian    9 年前