代码之家  ›  专栏  ›  技术社区  ›  Asad Khan

表达式

  •  10
  • Asad Khan  · 技术社区  · 16 年前

    谁能给我解释一下lambda表达式;它们的用途。我已经在google上搜索过了&我有个大概的想法。大多数例子都给出了c代码。在普通的旧C。。。?

    4 回复  |  直到 16 年前
        1
  •  13
  •   ndim    16 年前

    1. Lambda表达式是 lambda calculus 与函数式编程密切相关

    2. 在命令式语言中,lambda表达式通常是匿名方法的同义词。例如,在C#中,可以将lambda表达式(即表达式本身,而不仅仅是其结果)作为参数传递:

    C#:

    someCollection.Apply (x => 2*x); // apply expression to every object in collection
    // equivalent to 
    someCollection.Apply (delegate (int x) { return 2 * X; });
    

    尽管如此,C不支持匿名方法。但是,您可以使用函数指针来获得类似的结果:

    int multiply (int x)
    {
        return 2 * x;
    }
    
    ...
    collection_apply (some_collection, multiply);
    
        2
  •  2
  •   si618    16 年前

    假设您用c编写这些函数:

    int Multiply_1(int x) { return(x*1); }
    int Multiply_2(int x) { return(x*2); }
    int Multiply_3(int x) { return(x*3); }
    int Multiply_4(int x) { return(x*4); }
    etcetera, to infinity
    

    这些都很容易理解。现在假设您要编写一个函数,该函数以y作为输入,并返回指向函数Multiply\u y()的指针:

    (int)(int) *Make_Multiplier(int y) { return(Multiply_y); }
    

    其中“Multiply_y”是一个动态创建的函数,形式为Multiply_1、Multiply_2等。具有一流lambda函数的语言可以做到这一点。

        3
  •  1
  •   frankc    16 年前

    C不支持lamba表达式……如果您了解perl,我强烈推荐《高阶perl》一书,它将在熟悉(如果您了解perl)和实用的环境中为您介绍各种函数式编程技术。

        4
  •  -1
  •   Chris    16 年前

    看这张桌子 MSDN