Zwracanie funkcji.

0

Cześć :)
W ramach ćwiczeń znalazłem na codewars takie zadanie:
"Create a function add(n)/Add(n) which returns a function that always adds n to any number"
Sprawa trochę głupia, bo rozwiązanie strzeliłem dobrze i jest takie:

public static Func<double, double> Add(double n)
{
       return (x) => x + n;
}
	

Wywołanie:

Console.WriteLine(Program.Add(3)(1)); // wynik: 4

Problem mam taki, że za diabła nie rozumiem co tu się dzieje. Z wyrażeniami lambda na co dzień sobie radzę, ale tutaj nie wiem jak to działa, że "x" to w wywołaniu 1, a "n" to 3, czego dowiedziałem się na breakpoincie. I jak mam rozumieć takie wywołanie z dwoma nawiasami? W biblii do C# nie mogę znaleźć nic podobnego tak więc proszę Was o wyjaśnienie tego kodu :)

Pozdrawiam!
Dawid.

2

Z metody Add zwracasz Func<double, double>, a konkretnie lambde gdzie n jest argumentem metody Add, a x jest argumentem tej lambdy (czyli argumentem tego Func).
Zapis Add(3)(1) to tak naprawde skrót od Add(3).Invoke(1).

0

Dzięki za pomoc! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1