Zmienna liczba argumentów
Zmienna liczba argumentów[1], nieokreślona liczba argumentów[2], zmienna lista argumentów, to konstrukcja programistyczna umożliwiająca przekazanie do podprogramu nieokreślonej, w deklaracji (lub definicji) podprogramu, liczby argumentów. Programista deklarując (i definiując) podprogram zwykle deklaruje także określoną liczbę parametrów. W wywołaniu takiego podprogramu należy wyspecyfikować odpowiednią liczbę argumentów, odpowiadającą zdefiniowanym parametrom podprogramu. Są to argumenty wymagane. W pewnych językach programowania lub ich konkretnych implementacjach, istnieje możliwość, oprócz specyfikowania argumentów wymaganych, także specyfikowania zmiennej liczby argumentów, dla których w deklaracji podprogramu nie wyspecyfikowano jawnie odpowiednich parametrów. W tym przypadku istnieje konieczność zdefiniowana w implementacji języka programowania możliwości badania ilości przekazanych do podprogramu argumentów w jego wywołaniu i sposobu pobierania kolejnych argumentów z listy wywołania, a także ich prawidłowej interpretacji, w tym rozpoznania typu przekazanej danej.
Języki programowania
[edytuj | edytuj kod]C
[edytuj | edytuj kod]W implementacjach języka C zgodnych z rozszerzeniem standardowym tego języka opracowanym przez ANSI, można definiować funkcje, które mogą być wywoływane ze zmienną liczbą argumentów. W tym przypadku deklarator funkcji, po parametrach określających argumenty wymagane, zawierać powinien symbol "..." (trzy znaki kropki)[1].
Przykładem może być prototyp standardowej funkcji printf
int printf(char *Format, ...);
Brak jest w tym standardzie określenia sposobu określania ilości argumentów, ich pobierania i interpretacji. Dlatego zwykle odpowiednia implementacja tego zadania należy do programisty. W przypadku funkcji printf
jest to umieszczenie w pierwszym argumencie odpowiadającym parametrowi Format
odpowiednich specyfikatorów, np. %i
– dana typu int, %c
– dana typu char, %s
– napis (łańcuch znaków) itd. Brak argumentu dla kolejnego specyfikatora wygeneruje błąd.
Ruby
[edytuj | edytuj kod]W języku Ruby, ostatni parametr należy poprzedzić znakiem "*". Taki parametr zostanie przekształcony w tablicę. Ponieważ tablica jest obiektem, posiada metody takie jak np. size
określające rozmiar – liczbę elementów, czyli liczbę przekazanych argumentów[3]:
def identyfikator(*parametr)
Visual Basic, VBA
[edytuj | edytuj kod]W językach z rodziny Visual Basic, w tym VBA[2] można definiować jako ostatni lub jedyny parametr, specjalny parametr określony frazą ParamArray
. Parametr ten jest tablicą, w której zapisane zostaną kolejne argumenty[a]. Typem komórek tej tablicy jest typ Variant
, umożliwający przechowywanie danych różnych typów – dynamiczne typowanie. Odwołanie do kolejnych komórek tablicy zapewnia dostęp do kolejnych argumentów wywołania. Odpowiednie podprogramy wbudowane zapewniają możliwość badania ilości elementów tablicy[b] i typu wartości zapisanej w konkretnej komórce[c].
Nagłówki podprogramów[d]:
Sub Identyfikator1([parametry_wymagane,] ParamArray() As Variant)
Function Identyfikator2([parametry_wymagane,] ParamArray() As Variant) As Typ_Rezultatu
Zobacz też
[edytuj | edytuj kod]Uwagi
[edytuj | edytuj kod]- ↑ argumenty wywołania podprogramu, które nie mają odpowiedników w zadeklarowanych parametrach wymaganych lub opcjonalnych
- ↑ czyli ilości argumentów przekazanych do podprogramu
- ↑ czyli typu konkretnego argumentu przekazanego do podprogramu
- ↑ nawiasy kwadratowe grupują elementy opcjonalne i nie są częścią definicji
Przypisy
[edytuj | edytuj kod]- ↑ a b Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ISBN 83-204-1101-7
- ↑ a b John Walkenbach, Excel 2003 PL. Programowanie w VBA., HELION 2004 r., ISBN 837361-504-0
- ↑ b:Ruby