Wpis z mikrobloga

@losiul: jak to niczym się nie róƶnią?

x => x + x
vs

[](int x){ return x+x; }
Owszem, są znacznie bardziej konfigurowalne. Kosztem czytelności. (co znakomicie widać na podlinkowanym przykładzie)
  • Odpowiedz
@KrzaQ2: niet - ten przykład z C# tak naprawdę w prawdziwym kodzie wyglądać będzie tak:

(int x) => x + x
a w wypadku lambdy która ma więcej niż 1 linijkę i tak treść funkcji musisz wziąć w klamry. Ergo, prawie bez różnicy.
  • Odpowiedz
@losiul: Jak się bawiłem linq to nigdy nie musiałem podawać typu, nawet jak to były jakieś wymyślne klasy. Pisanie kilku selectów i map lambdami D/C# a C++ to niebo a piekło.
  • Odpowiedz
  • 0
@losiul: Po co deklarować typ zmiennej w lambdzie?
Co więcej - najważniejsze są lambdy jednolinijkowe, bo to one pozwalają na uniknięcie najwięcej kodu (kilkanaście znaków vs. pętla), są trywialne w optymalizacji dla kompilatora. Python ma tylko jednowyrażeniowe lambdy i nie robi to dużego problemu.
  • Odpowiedz
@Ginden: Np wtedy kiedy nie masz zdefiniowanej wcześniej deklaracji lambdy - np. przy lambdach szablonowych, kompilator skądś musi wiedzieć czego tam użyć. Jest też pewnie parę innych przykładów, np kiedy chcesz uniknąć jakiejś konwersji.
Lambdy wielolinijkowe też mają sens. Np dwu : >. Bo czasem zamiast bawić się w wygibasy wygodniej i czytelniej jest użyć dwóch linijek ..
Choć w C++ wykorzystywałem też całkiem długie i choć nie uważam tego
  • Odpowiedz