Хтось може дати хороший опис того, що таке Лямбда? У нас є для них тег, і вони розкривають секрети запитання на C #, але я ще не знайшов хорошого визначення та пояснення того, чим вони є.
Хтось може дати хороший опис того, що таке Лямбда? У нас є для них тег, і вони розкривають секрети запитання на C #, але я ще не знайшов хорошого визначення та пояснення того, чим вони є.
Відповіді:
Закриття, лямбда та анонімні функції - не обов’язково одне і те ж.
Анонімна функція - це будь-яка функція, яка не має (або, принаймні, потребує) власного імені.
Закриття - це функція, яка може отримати доступ до змінних, які знаходились у його лексичному обсязі, коли він був оголошений, навіть після того, як вони вийшли за межі обсягу. Анонімні функції не обов'язково повинні бути закритими, але вони є на більшості мов і стають досить менш корисними, коли цього не роблять.
Лямбда - це .. не настільки чітко визначена, що стосується інформатики. Багато мов навіть не використовують цей термін; натомість вони просто називатимуть їх закриттями чи анонімними функціями або вигадуватимуть власну термінологію. У LISP лямбда - це просто анонімна функція. У Python лямбда - це анонімна функція, спеціально обмежена одним виразом; щось більше, і вам потрібна названа функція. Лямбди - це закриття обома мовами.
Також називається закриттям або анонімними функціями .. Я знайшов найкращий опис тут . В основному, вбудований блок коду, який може бути переданий як аргумент функції.
"Лямбда" відноситься до Лямбда-числення або до конкретного лямбда-виразу. Лямбда-числення - це в основному розділ логіки та математики, який має справу з функціями, і є основою функціональних мов програмування .
~ Вільям Райлі-Ленд
Це просто анонімна функція, оголошена вбудованою, найчастіше присвоюється делегатові, коли ви не хочете писати повноцінну функцію.
У таких мовах, як lisp / схема, вони часто передаються досить ліберально як параметри функції, але ідіома в C # зазвичай знаходить лямбди, що використовуються лише для лінивого оцінювання функцій, як у linq, або для того, щоб зробити код обробки подій трохи більш строгим.
У програмуванні насправді не існує такого поняття, як "лямбда". Це залежить від мови тощо.
Коротше кажучи, як правило, мова, що має "лямбди", використовує цей термін для анонімних функцій або, в деяких випадках, закриття. Ось так, в Ruby:
f = lambda { return "this is a function with no name" }
puts f.call
У відповідь на попередні відповіді:
- Найголовніше в анонімних функціях - це не те, що вони не вимагають імені.
-Закриття - це окреме поняття.
-Гігантська стаття Вікіпедії не робить цього яснішим.
Ось моя відповідь із 3 частин:
1. Лямбда - це функція, яка також є виразом. Це головне.
2. Багато мов, які реалізують так звані "лямбди", додають трохи синтаксичного цукру, щоб полегшити та швидше писати ці короткі функції, але це не потрібно.
3. Деякі мови можуть вимагати, щоб лямбда не мала побічних ефектів . Це було б більш чистою лямбда у функціональному сенсі.
Коли функція є виразом, це "громадянин першого класу" в межах мови. Я можу робити з ним усі важливі речі:
x = lambda(){ return "Hello World"; }
doit( 1, 2, lambda(a,b){ return a > b; }, 3 )
x = (lambda(a){ return a+1; }) + 5 // type error, not syntax error
(lambda(a,b){ print(a); log(b); })( 1, 2 ) // () is valid operator here
Вирізано з wikipedia: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
У таких мовах програмування, як Lisp та Python, лямбда - це оператор, який використовується для позначення анонімних функцій або закриття, після використання лямбда-числення.