Очень простое объяснение лямбда-выражения - PullRequest
12 голосов
/ 14 мая 2011

Я ищу очень простое - базовое - не хардкорное программирование. Мумбо Джамбо, просто изложу обобщенный обзор лямбда-выражения в терминах непрофессионала.

Ответы [ 4 ]

9 голосов
/ 14 мая 2011

Лямбда-выражение, проще говоря, повторно используемое выражение, которое принимает ряд аргументов:

x => x + 1;

Вышеприведенное выражение гласит «для данного x, вернуть x + 1».

В .NET это мощно, потому что его можно скомпилировать в анонимный делегат, безымянную функцию, которую вы можете объявить inline с вашим кодом и оценить для получения значения:

int number = 100;

Func<int, int> increment = x => x + 1;

number = increment(number); // Calls the delegate expression above.

Однако реальная сила лямбда-выражения заключается в том, что его можно использовать для инициализации представления самого выражения в памяти.

Expression<Func<int, int>> incrementExpression = x => x + 1;

Это означает, что вы можете присвоить это выражение чему-то вроде LINQ to SQL, и оно сможет понять, что означает выражение , переведя его в оператор SQL, имеющий то же значение. Именно здесь лямбды сильно отличаются от обычных методов и делегатов, и обычно здесь начинается путаница.

3 голосов
/ 14 мая 2011

Лямбда-выражения - это встроенные функции, синтаксис которых отличается от обычных функций.

Пример лямбда-выражения для возведения в квадрат числа.

 x => x * x
2 голосов
/ 14 мая 2011

Небольшой безымянный встроенный метод. Это достаточно просто для вас? Я не уверен, что именно вы ищете.

Вы также сказали «мирянином» - я предполагаю, что у вас есть некоторый уровень опыта разработки программного обеспечения (поэтому не полный дилетант)

1 голос
/ 14 мая 2011

В не функциональных языках программирования выражения (которые воздействуют на переменные) выполняют вычисления, и они выполняют эти вычисления один раз.

Лямбда-выражения позволяют вам определять (в выражении) другой синтаксический код, который может работать ссписок и может концептуально рассматриваться как функция.


Вы могли бы упростить это, чтобы сказать "Они позволяют определять функции в выражениях".


Не совсем доходит до "Зачем".Чем интереснее, на мой взгляд.Лямбда-выражения позволяют манипулировать функциями и частичными функциями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...