Strona główna » Kursy » Kurs C# » Argumenty Nazwane
 

Argumenty Nazwane

Wstęp

Argumenty nazwane to bardzo wygodne rozwiązanie, które pozwala przekazywać parametry do funkcji bez znajomości ich kolejności, a znając ich nazwę. Nie można ich jednak mieszać z tradycyjnymi argumentami. W tym artykule zostanie wyjaśnione krok po kroku jak skorzystać z tego rozwiązania.

Argumenty Nazwane

Programista bardzo często korzysta z gotowych bibliotek napisanych przez innych programistów. To skraca jego czas pracy, ponieważ wielu funkcjonalności nie musi pisać od nowa. Jednak korzystanie z nieznanych funkcji może się okazać problematyczne, ponieważ niewiadomo w jakiej kolejności trzeba je podać. Dzisiejsze IDE rozwiązują ten problem poprzez podpowiadanie programiście jakie argumenty powinien przekazać. Załóżmy jednak, że programista zna nazwy argumentów, ale nie pamięta ich kolejności.

Przykład 1

Rozwiązaniem są nazwane argumenty, które pozwalają wywołać funkcję z wymieszanymi argumentami. Kompilator musi jednak wiedzieć jak te argumenty zostały wymieszane z tego powodu przed wartością argumentu należy dopisać co to za argument oraz dwukropek. Przypuśćmy, że mamy funkcję, która dodaje dwie liczby:

  1. public static int dodaj(int a, int b) {
  2.   return a + b;
  3. }

W celu dodawania dwóch liczb należało wywołać funkcją następująco:

  1.   wynik = dodaj(2, 3);

Takie wywołanie to cicha umowa pomiędzy programistom, a kompilatorem, która oznacza, że w nawiasach podane zostały argumenty i każda kolejna wartość odpowiada kolejnemu argumentowi funkcji. Jednak argumnty można przekazać jako argumenty nazwane. Wtedy jest możliwe nawet przetasowanie kolejności przypisania danych. Oto przykład:

  1.   wynik = dodaj( a : 2, b : 3 );

Takie rozpisanie przekazywania elementów zwiększa czytelność jaka wartość jest przekazywana do którego argumentu funkcji. Dla większości programistów rozwiązanie to jest mało wygodne, ponieważ wymaga dodatkowego pisania, a ponadto poprawki w kodzie mogą być trudniejsze jeśli zmienią się nazwy argumentów funkcji.

Przykład 2

Tak samo jak w przypadku wywołań funkcji bez argumentów nazwanych należy pamiętać, że trzeba podać wszystkie wymagane argumenty prócz opcjonalnych. Przypuśćmy, że mamy do obliczania iloczynu trzech liczb funkcję iloczyn().

  1. public static int iloczyn(int a, int b, int c = 1) {
  2.   return a * b * c;
  3. }

Zgodnie z definicją trzeci argument jest opcjonalny i jeśli nie jest podany to jego wartość to 1 (co przy mnożeniu nie wpływa na wynik). Ponownie przypomnijmy sobie jak mogłoby wyglądać wywołanie takiej funkcji:

  1.   wynik = iloczyn(7, 8);

Argumenty a oraz b można podać jednak w odwrotnej kolejności używając argumentów nazwanych tak jak poniżej:

  1.   wynik = iloczyn(b: 7, a: 8);

Zwróćmy uwagę na to, że gdyby nie zostało podane do którego argumentu przypisana jest która wartość to kompilator mógłby odwrotnie przypisać wartości. W przypadku dodawanie i mnożenia nie miałoby to większego znaczenia, ale podczas odejmowania lub dzielenia już miałoby ogromne.

Przypatrzmy się jeszcze poniższemu przykładowi:

  1.   wynik = iloczyn(b: 7, a: 8);

Pierwszy argument został podany bez przypisania do którego argumentu przynależy. W takim przypadku kompilator traktuje go jako pierwszy argument funkcji. Następnie został podany parametr opcjonalny c, a potem dopiero b. Podczas takiego mieszania argumentów należy pamiętać, że najpierw muszą zostać podane wszystkie argumenty nienazwane (ale nie muszą być), a następnie wszystkie wyamagane argumenty jako nazwane.

Podsumowanie

Argumenty nazwane pozwalają na bardzo intuicyjny sposób przypisywania wartości argumentom funkcji nawet bez pomocy kompilatora. Należy jednak pamiętać, że jeśli funkcje nie mają odpowiednio nazwanych przyjmowanych argumentów to używanie argumentów nazwanych będzie trudne. Z tego powodu należy pamiętać, aby podczas pisania własnego kodu pisać go w sposób jak najprostszy i logiczny.