Что такое лямбда (функция)?

Лямбда — это встроенный тип language-agnostic функции. Наряду с лямбдой cs у вас также обычно есть какой-то cs тип переменной, который может lambda содержать ссылку на функцию, лямбду computer-science или что-то еще.

Например, вот cs фрагмент кода C#, в котором theory не используется лямбда:

public Int32 Add(Int32 a, Int32 b)
{
    return a + b;
}

public Int32 Sub(Int32 a, Int32 b)
{
    return a - b;
}

public delegate Int32 Op(Int32 a, Int32 b);

public void Calculator(Int32 a, Int32 b, Op op)
{
    Console.WriteLine("Calculator: op(" + a + ", " + b + ") = " + op(a, b));
}

public void Test()
{
    Calculator(10, 23, Add);
    Calculator(10, 23, Sub);
}

Это lambda-expressions вызывает Calculator, передавая generic-lambda не только два числа, но и lambda какой метод вызывать внутри cs Calculator для получения theory результатов расчета.

В C# 2.0 language-agnostic мы получили анонимные методы, которые terminology сокращают приведенный выше language-independent код до:

public delegate Int32 Op(Int32 a, Int32 b);

public void Calculator(Int32 a, Int32 b, Op op)
{
    Console.WriteLine("Calculator: op(" + a + ", " + b + ") = " + op(a, b));
}

public void Test()
{
    Calculator(10, 23, delegate(Int32 a, Int32 b)
    {
        return a + b;
    });
    Calculator(10, 23, delegate(Int32 a, Int32 b)
    {
        return a - b;
    });
}

А потом в C# 3.0 появились lambda лямбда-выражения, что сделало lambda-expressions код еще короче:

public delegate Int32 Op(Int32 a, Int32 b);

public void Calculator(Int32 a, Int32 b, Op op)
{
    Console.WriteLine("Calculator: op(" + a + ", " + b + ") = " + op(a, b));
}

public void Test()
{
    Calculator(10, 23, (a, b) => a + b);
    Calculator(10, 23, (a, b) => a - b);
}

lambda

language-agnostic

computer-science

terminology

theory

2022-10-24T16:52:26+00:00