Jason. Cała informatyka w jednym miejscu!

Kotlin raz kolejny w centrum zainteresowania! Dzisiaj przyjrzymy się fikuśnej możliwości otwierającej drogę do wywoływania funkcji z nieskończenie wielką liczbą parametrów. "vararg" w języku Kotlin dopilnuje, żebyście mogli wpakowywać nieregularną liczbę parametrów bez przeciążania funkcji!

"VARARG" W JĘZYKU KOTLIN NADAJE FUNKCJI WYJĄTKOWĄ WŁAŚCIWOŚĆ

Zabieg jaki to słowo kluczowe otwiera, nauka określa mianem "zmiennej liczby argumentów". Argument, parametr, jest to określane zamiennie. Chodzi o możliwość wstawiania nieokreślonej z góry liczby parametrów. Tradycyjnie jest to narzucane przez nagłówek funkcji. Zwykle wiadomo ile ich jest, jakiego typu i w jakiej kolejności je wprowadzić (jeszcze może być wartość domyślna, ale nie wszystkie języki to oferują). Nakaz ten łamie wspomniana zmienna liczba argumentów. Powoduje ona to, że od określonego parametru, funkcja zezwoli na wprowadzenie ich nieskończonej liczby.

PRZYKŁAD KODU ŹRÓDŁOWEGO

Czym by był ten artykuł bez krótkiego przykładu? Popatrzmy na taką funkcję:

fun printInts(vararg values: Int) {
	for (v in values) {
		println(v)
	}
}

"vararg" w języku Kotlin? Obecne! Zatem przykładowe wywołanie może wyglądać tak:

printInts(5, 7)

może wyglądać tak:

printInts(5, 7, 8)

a nawet tak:

printInts(5, 7, 8, 3, 50, 300, 87, -5, 67, 905)

Gołym okiem widać praktyczne zastosowanie. Więcej komentować nie trzeba.

DRUGIE DNO

Korzystając z "vararg" w języku Kotlin, musicie wiedzieć że wartości są "formowane" w tablicę. To znaczy, że wewnątrz funkcji możecie skorzystać z pętli "for" i bezkarnie operować na zmiennej liczbie parametrów jak na tablicy, nawet kiedy ona nią nie jest!

for (v in values) {
	println(v)
}

JEST JEDNO "ALE"! A NAWET DWA!

Chwilunia! Zanim zaczniecie z tego korzystać bez opamiętania, poznajcie pewne ograniczenia bo takowe występują. Jest takie, że "vararg" w języku Kotlin może występować WYŁĄCZNIE obok ostatniego parametru w kolejności (dopuszcza się możliwość łączenia zwykłych parametrów z "vararg", ale to musi być na końcu)! Nie muszę chyba tłumaczyć dlaczego (jak zidentyfikowałoby się koniec salwy parametrów, gdyby były jeszcze jakieś pojedyncze?). Jest takie, że TYLKO JEDEN parametr w nagłówku funkcji może się przetransformować w ich zmienną liczbę (również z tego samego powodu). Krócej pisząc, zapomnijcie o wielokrotnym wstawianiu "vararg".

Teraz gdy zostaliście uprzedzeni, mogę dać Wam spokój.

Słowo kluczowe "vararg" w języku Kotlin

Zmienna liczba parametrów to możliwość zamiany jednego parametru na nieskończenie wiele parametrów tego samego typu. Wewnątrz funkcji oferującej zmienną liczbę parametrów, można się na nią powołać jak na tablicę.

Jeszcze jedno. "vararg" w języku Kotlin to kolejna z funkcjonalności przeniesionych niż wynalezionych. W Javie też coś takiego występuje, ale nie jako słowo kluczowe. Pamiętacie niektórzy z Was, zostawiony wielokropek obok typu jednego z parametrów formalnych?

private void printInts (int... values) {
	for (int v : values) {
		System.out.println(v);
	}
}

I to byłby koniec wszystkich niezbędnych informacji. Zazwyczaj rozwiązanie problemu nie wymaga użycia czegoś takiego, bo w gruncie rzeczy jest to tablica tylko poćwiartowana na pojedyncze parametry. Z tego powodu ten temat traktuję jak poboczny, dla wszystkich ludzi którzy chcą być po prostu mądrzy w tym zawodzie.

PODOBNE ARTYKUŁY