Loading AI tools
Z Wikipedii, wolnej encyklopedii
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.
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.
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)
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[uwaga 1]. 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[uwaga 2] i typu wartości zapisanej w konkretnej komórce[uwaga 3].
Nagłówki podprogramów[uwaga 4]:
Sub Identyfikator1([parametry_wymagane,] ParamArray() As Variant)
Function Identyfikator2([parametry_wymagane,] ParamArray() As Variant) As Typ_Rezultatu
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.