Wyrażenia Lambda są kolejnym elementem .NET 3.0, który zwrócił moją uwagę (zaraz po zapoznaniu się z LINQ).
Wyrażenia Lambda zapożyczone z języków funkcyjnych (np. Haskel) znajdują również zastosowanie w C# jednocześnie bardzo ładnie skracając kod. Wyrażenia Lambda mogą być stosowane wszędzie tam, gdzie oczekiwanym parametrem jest delegate. Króciutki przykład:
var list = new List();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(5);
/* zastosowanie wyrażenia lambda do filtrowania listy */
var search = list.Where( i => (i % 2) == 0 );
foreach( var i in search )
{
Console.WriteLine( "elem: " + i.ToString() );
}
W rezultacie otrzymamy oczywiście:
elem: 2 elem: 4

gim
25 KWI 2008 o 14:01:24Delegatki, kontenery, filtry dla kontenerów (D)
Dawno nic się tu nie działo, głównie dlatego, że nie bardzo mam czas
cokolwiek pisać.
Deely
pisał jakiś czas temu o wyrażeniach lambda w C#. Dzisiaj trochę o różnych bajerach jakie można robić w D.
Na początek zrobimy sobie[...]

GiM
06 MAR 2008 o 16:29:35buuu, zdrajca, w D to już jest i lepiej! :P
s
06 MAR 2008 o 17:56:59GiM już ? Już to byś mógł powiedzieć w latach 60-tych co najwyżej (pojawiła się po raz pierwszy pod koniec 50-tych).
Btw, całkiem przyjemnie ten C# wygląda, choć klasyka mi jakoś bardziej pasuje:
(let* ((list ‘(1 2 3 4 5)) (search (remove-if (lambda (i) (plusp (mod i 2))) list))) (dolist (i search) (format t „~&elem: ~A” i)))

deely
06 MAR 2008 o 19:38:59GiM: buuu, zdrajca, w D to już jest i lepiej! :P
Jaki tam zdrajca ;) Trzeba poznać konkurencję zanim się ją wytępi ;)
Seban
06 MAR 2008 o 20:16:18Dziś w pracy podobne wyrażenia były dla mnie wybawieniem. :-) Ale w Rubim oczywiście. Tam to jest powszechnie stosowane, coś fajnego.
@S czy to co napisałeś to jest z Lispa? Ni cholery nie wiem co tam jest.

GiM
18 MAR 2008 o 16:31:56@S: biorąc pod uwagę, że D nie ma chyba dziesięciu lat, to chyba mogę powiedzieć ‘już’?
szczerze mówiąc, to D nie ma wyrażeń lambda w takiej formie jak prezentowana tu w C#. Miałem napisać krótki art, ale czasu nie mogę znaleźć
s
20 MAR 2008 o 12:37:23@GiM, a możesz pisać co chcesz ;) to „już” nie pasuje mi ze względu na to sam ficzer w komputerystyce nie jest nowy. Jeśli masz na myśli tylko język D bez odniesienia do innych to „już” pasuje, ale imho jeśli go porównujesz z innymi to już nie… ;)
@Seban, owszem z Common Lispu. Jak byś to chciał wkleić & uruchomić to nie pójdzie bo coś tu podmienia cudzysłowy (textile ?) btw, normalnie to by wyglądało nieco inaczej/krócej ale pisałem tak żeby to była „kalka” przykładu a nie kod charakterystyczny dla lispu.