«

»

sie 21

Linq inside (lamba expressions)

Dzisiaj opisze mechanizm lamba expression.
Dla przypomnienia Linq jest połączeniem 5 elementów:

Wyrażenia lambda to nic innego jak syntactic sugar czyli taki bonus od Microsoftu, który ułatwia pisanie kodu. Wyrażenia lambda upraszczają zapisu delegatu. Przypomnijmy przykład z poprzedniego wpisu.

Przykład ten wypisuje liczby z kolekcji dopóki są to liczby parzyste. Jednak cała składnia jest trochę trudna do przeanalizowania ponieważ, najpierw deklarujemy zmienna typu Func o nazwie isModTwo i przypisujemy do niej delegata anonimowego a następnie przekazujemy zmienna do TakeWhile. W takim przypadku osoba analizująca kod musimy więc pamiętać co kryje definicja zmiennej isModTwo.

Oczywiście, nie musimy w ogóle korzystać ze zmiennej, możemy bezpośrednio w wywołaniu funkcji TakeWhile wpisać delegata anonimowego.

Jak widzimy kod stał się łatwiejszy w zrozumieniu ponieważ wszystkie instrukcje mają swoją logiczną kolejność i nie trzeba skakać po kodzie w poszukiwaniu deklaracji delegata. Teraz ten sam kod zapisany za pomocą wyrażenia lambda.

Jak widać ten sam delegat zapisany za pomocą wyrażenia lambda jest bardziej zwięzły. Dzięki zastosowaniu wyrażeń lambda nie musimy pisać już słowa kluczowego delegate. Można opuścić również słowo return o ile wyrażeniem jest jedna instrukcja. Nawiasy przy zmiennej i są również opcjonalne w tym przypadku. Jeśli wyrażenie lambda przyjmuje 0 lub więcej niż jeden parametr nawiasy są wymagane.

Podsumowując składnia wyrażenia lambda, na pierwszy rzut oka może wyglądać dziwnie i wielu początkujących programistów to odstrasza. Jednak gdy już zrozumie się że to nic innego jak uproszczony zapis delegata już nigdy nie przestanie się ich używać ponieważ znacząco ułatwiają życie programisty.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć tych znaczników i atrybutów HTMLa: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Current day month ye@r *