Birisi Lambda'nın ne olduğu hakkında iyi bir açıklama sağlayabilir mi? Onlar için bir etiketimiz var ve C # sorusunun sırları üzerinde duruyorlar, ancak ilk etapta ne olduklarına dair iyi bir tanım ve açıklama bulamadım.
Birisi Lambda'nın ne olduğu hakkında iyi bir açıklama sağlayabilir mi? Onlar için bir etiketimiz var ve C # sorusunun sırları üzerinde duruyorlar, ancak ilk etapta ne olduklarına dair iyi bir tanım ve açıklama bulamadım.
Yanıtlar:
Kapanışlar, lambdalar ve anonim işlevler mutlaka aynı şey değildir.
Anonim bir işlev, kendi adına sahip olmayan (veya en azından buna ihtiyaç duymayan) herhangi bir işlevdir.
Kapanış, bildirildiklerinde, kapsam dışında kaldıktan sonra bile sözlü kapsamındaki değişkenlere erişebilen bir işlevdir . Anonim işlevlerin mutlaka kapalı olması gerekmez, ancak çoğu dilde bulunurlar ve olmadıklarında daha az kullanışlı hale gelirler.
Bir lambda .. bilgisayar bilimi söz konusu olduğunda pek iyi tanımlanmamıştır. Çoğu dil bu terimi kullanmaz bile; bunun yerine, onlara sadece kapanışlar veya anon işlevleri diyecekler veya kendi terminolojilerini icat edecekler. LISP'de, bir lambda yalnızca anonim bir işlevdir. Python'da bir lambda, özellikle tek bir ifadeyle sınırlı anonim bir işlevdir; daha fazlası ve adlandırılmış bir işleve ihtiyacınız var. Lambdalar her iki dilde de kapanışlardır.
Kapanışlar veya anonim işlevler de deniyor .. En iyi açıklamayı burada buldum . Temel olarak, bir işleve argüman olarak aktarılabilen satır içi kod bloğu.
"Lambda", Lambda Calculus'u veya belirli bir lambda ifadesini ifade eder. Lambda hesabı, temelde işlevlerle ilgilenen ve işlevsel programlama dillerinin temelini oluşturan bir mantık ve matematik dalıdır. .
~ William Riley-Land
Bu, yalnızca, tam teşekküllü bir işlev yazmak istemediğinizde genellikle bir temsilciye atanan, satır içi olarak bildirilen anonim bir işlevdir.
Lisp / şeması gibi dillerde, genellikle işlev parametreleri olarak oldukça özgürce aktarılırlar, ancak C # deyimi tipik olarak lambdaları, linq'deki gibi işlevlerin tembel olarak değerlendirilmesi için veya olay işleme kodunu biraz daha ayrıntılı hale getirmek için kullanılan lambdaları bulur.
Önceki cevaplara yanıt olarak:
-Anonim işlevlerle ilgili önemli olan şey, bir ad gerektirmemeleri değildir.
-Kapanlar ayrı bir kavramdır.
- Devasa bir wikipedia makalesi bunu daha net hale getirmiyor.
Cevabım 3 kısımda:
1. Lambda aynı zamanda bir ifade olan bir fonksiyondur. Bu önemli olan şey.
2. "Lambdas" olarak adlandırılan birçok dil, bu kısa işlevleri yazmayı daha kolay ve daha hızlı hale getirmek için biraz sözdizimsel şeker ekler , ancak bu gerekli değildir.
3. Bazı diller, lambda'nın hiçbir yan etkisinin olmamasını gerektirebilir . Bu, işlevsel anlamda daha saf bir lambda olurdu.
Bir işlev bir ifade olduğunda, o dil içinde "birinci sınıf vatandaş" dır. Onunla tüm önemli şeyleri yapabilirim:
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'dan kısaltılmıştır: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
Lisp ve Python gibi programlama dillerinde lambda, lambda hesaplamasının ardından anonim işlevleri veya kapanmaları belirtmek için kullanılan bir operatördür.