Könnte jemand eine gute Beschreibung geben, was ein Lambda ist? Wir haben ein Tag für sie und sie sind auf den Geheimnissen der C # -Frage, aber ich muss noch eine gute Definition und Erklärung finden, was sie überhaupt sind.
Könnte jemand eine gute Beschreibung geben, was ein Lambda ist? Wir haben ein Tag für sie und sie sind auf den Geheimnissen der C # -Frage, aber ich muss noch eine gute Definition und Erklärung finden, was sie überhaupt sind.
Antworten:
Verschlüsse, Lambdas und anonyme Funktionen sind nicht unbedingt dasselbe.
Eine anonyme Funktion ist eine Funktion, die keinen eigenen Namen hat (oder zumindest benötigt).
Eine Schließung ist eine Funktion , die Variablen , die waren in ihrem lexikalischen Gültigkeitsbereich zugreifen kann , wenn sie erklärt wurde, auch nachdem sie gefallen sind , aus dem Umfang. Anonyme Funktionen müssen nicht unbedingt Schließungen sein, sie sind jedoch in den meisten Sprachen verfügbar und werden weniger nützlich, wenn sie nicht vorhanden sind.
Ein Lambda ist in Bezug auf die Informatik nicht ganz so gut definiert. Viele Sprachen verwenden den Begriff nicht einmal. Stattdessen nennen sie sie einfach Closures oder Anon-Funktionen oder erfinden ihre eigene Terminologie. In LISP ist ein Lambda nur eine anonyme Funktion. In Python ist ein Lambda eine anonyme Funktion, die speziell auf einen einzelnen Ausdruck beschränkt ist. Alles andere, und Sie benötigen eine benannte Funktion. Lambdas sind Verschlüsse in beiden Sprachen.
Auch Schließungen oder anonyme Funktionen genannt. Die beste Beschreibung habe ich hier gefunden . Grundsätzlich Inline-Codeblock, der als Argument an eine Funktion übergeben werden kann.
"Lambda" bezieht sich auf den Lambda-Kalkül oder auf einen bestimmten Lambda-Ausdruck. Die Lambda-Rechnung ist im Grunde ein Zweig der Logik und Mathematik, der sich mit Funktionen befasst und die Grundlage für funktionale Programmiersprachen bildet .
~ William Riley-Land
Es handelt sich lediglich um eine anonyme Funktion, die als Inline deklariert wurde und normalerweise einem Delegaten zugewiesen wird, wenn Sie keine vollwertige Funktion schreiben möchten.
In Sprachen wie lisp / Schema werden sie häufig recht großzügig als Funktionsparameter herumgereicht, aber die Redewendung in C # findet normalerweise Lambdas, die nur zur verzögerten Auswertung von Funktionen wie in linq verwendet werden oder um den Code für die Ereignisbehandlung etwas knapper zu machen.
Es gibt nicht wirklich so etwas wie ein Lambda in der Programmierung. Das hängt von der Sprache usw. ab.
Kurz gesagt, normalerweise verwendet eine Sprache, die Lambdas hat, den Begriff für anonyme Funktionen oder in einigen Fällen für Schließungen. So in Ruby:
f = lambda { return "this is a function with no name" }
puts f.call
Antwort auf die vorherigen Antworten:
- Das Wichtige an anonymen Funktionen ist nicht, dass sie keinen Namen benötigen.
-Verschlüsse sind ein separates Konzept.
- Ein gigantischer Wikipedia-Artikel macht dies nicht klarer.
Hier ist meine Antwort in 3 Teilen:
1. Ein Lambda ist eine Funktion, die auch ein Ausdruck ist. Das ist das Wichtige.
2. Viele Sprachen, die sogenannte "Lambdas" implementieren, fügen etwas syntaktischen Zucker hinzu , um das Schreiben dieser kurzen Funktionen einfacher und schneller zu machen. Dies ist jedoch nicht erforderlich.
3. Einige Sprachen erfordern möglicherweise, dass ein Lambda keine Nebenwirkungen hat . Das wäre ein reineres Lambda im funktionalen Sinne.
Wenn eine Funktion ein Ausdruck ist, ist sie ein "erstklassiger Bürger" innerhalb der Sprache. Ich kann alle wichtigen Dinge damit machen:
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
Aus Wikipedia ausgeschnitten: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
In Programmiersprachen wie Lisp und Python ist Lambda ein Operator, mit dem anonyme Funktionen oder Abschlüsse nach der Verwendung von Lambda-Kalkül bezeichnet werden.