Otwieramy nowy artykuł! Przyjrzymy się instrukcji "switch" nazwanej także "instrukcją wielokrotnego wyboru" jak ona wygląda w Kotlinie i jak wygląda jej programowanie. Poprawka na starcie, żaden "switch" nie istnieje, a zastępuje go "when" w języku Kotlin, który jest jeszcze potężniejszy! Zapraszam po wyjaśnienia.

"WHEN" W JĘZYKU KOTLIN, CZYLI "SWITCH" W WERSJI 2.0

Jeśli mówicie o Kotlinie, to wypieracie ze swojej świadomości słowo "switch"! Tutaj tego NIE MA. Zamiast niego jest "when" które, o ile się orientujecie co do zastosowania instrukcji wielokrotnego wyboru w Javie, działa dokładnie tak samo tylko składnia jest inna. Napiszmy, że...trochę zupełnie inna.

Instrukcja wielokrotnego wyboru pozwala na wykonanie odpowiednich serii instrukcji zależnie od zdefiniowanych przypadków ("case") w postaci stałych wartości w odpowiednim typie (np. 15 gdy sprawdzało się liczbę całkowitą, "Marmur" gdy sprawdzało się łańcuch znaków itd.). Znajomość instrukcji "switch" potrafi znacznie zredukować ilość kodu spowodowaną rozgałęzieniami przez instrukcje warunkowe "else if".

SKŁADNIA

Raz jeszcze spróbujmy sobie to porównać sięgając do języka Java:

switch(x)
{
	case 1:
		System.out.println("Zmienna X ma wartość 1.");
		break;
	
	case 2:
	case 3:
	case 4:
		System.out.println("Zmienna X ma wartość 2, 3 lub 4.");
		break;

	default:
		System.out.println("Zmienna X ma wartość mniejszą niż 1,");
		System.out.println("bądź większą od 4");
		break;
}

a oto proszę Państwa, wersja z użyciem "when" w języku Kotlin:

when(x)
{
	1 -> println("Zmienna X ma wartość 1.")
	2, 3, 4 -> println("Zmienna X ma wartość 2, 3 lub 4.")
	else ->
	{
		println("Zmienna X ma wartość mniejszą niż 1,")
		println("bądź większą od 4")
	}
}

Standardowe pytanie: jakie widzimy różnice? Przede wszystkim, wyparowało słowo "case" więc nasze myśli możemy "ubrać" w znacznie uboższy zapis wstawiając tylko stałą wartość, a zaraz po niej operator tzw. "strzałki", drugi czynnik wyróżniający jedno od drugiego. Kilka "case'ów" przydzielonych do tego samego zadania? To wymieniamy wszystkie przypadki po przecinku. Zwróćcie uwagę jak wszystko się pięknie upraszcza!

Co jeszcze? "else" zamiast "default" (o ile jest potrzebne)! To samo "else" jakie widzimy podczas programowania instrukcji warunkowych. Żadnych wyspecjalizowanych "keyword'ów"! "else" umożliwia Wam uwzględnienie sytuacji, kiedy żadna z powyższych opcji nie została wykonana. W zależności od naszych intencji, to jest poboczne lub wymagane (szczegóły niżej). I ostatnia sprawa, to brak słowa kluczowego "break" po ustaleniu ciągu instrukcji! "when" w języku Kotlin "poradzi sobie" w dopilnowaniu, żeby wykonywanie instrukcji "nie szło dalej" (ci, co wiedzą jaki skutek odniesie brak słowa "break" w instrukcji "switch", to wiedzą o co chodzi).

To nie wszystko. Jak widzimy, można bez przeszkód wstawić zagnieżdżone klamerki po operatorze "strzałki" w ten sposób torując sobie drogę do wstawienia WIELU instrukcji. W innym wypadku możemy ograniczyć się tylko do wprowadzenia instrukcji zaraz po strzałeczce, jeśli ma to być pojedyncza instrukcja. Bystre oko zauważy, że tu znowu mamy nawiązanie do wyrażeń lambda, w których również jest operator strzałki, także można pominąć klamerki gdy ma się wykonać tylko jedna czynność i także mamy pełne prawo do ich wstawienia, i tym samym wyegzekwowanie wykonania dwóch lub wielu poleceń.

WYRAŻENIE WIELOKROTNEGO WYBORU?

To nie koniec atrakcji, tutaj są większe możliwości. "when" w języku Kotlin można także podstawić pod operator przypisania wartości do zmiennej! Znowu mamy okazję uprościć swoje pisanie bez używania instrukcji warunkowych, a potrzebujemy więcej niż dwóch ścieżek:

val y = when(x)
{
	5 -> 1
	10 -> 2
	else -> 0
}

Uwaga! W tym przypadku TRZEBA nałożyć słowo "else", gdyż wyrażenie musi zwrócić wartość w każdym przypadku. Innymi słowy, trzeba zaprogramować przypisywanie wartości dla każdej sytuacji (dla konkretnych sytuacji oraz dla przypadku, kiedy nie sprawdził się żaden podany scenariusz). Inaczej, błąd kompilacji. Ponadto, ono musi być na samym końcu, gdyż w przeciwnym razie program nigdy nie będzie w stanie "dojść" do sprawdzenia innych bardziej wyszczególnionych przypadków.

Przypisywanie wartości zmiennej przy użyciu instrukcji "when" w języku Kotlin

Instrukcja "when" w języku Kotlin umożliwia realizację instrukcji wielokrotnego wyboru znanej z Javy. W przeciwieństwie do niej, pozwala także na zwracanie odpowiedniej wartości używając prostego i zwartego kodu!


Można się zdziwić ile jeszcze Kotlin posiada w sobie "bajerów". To koniec prezentacji instrukcji "when" na ten moment. Traktujcie to jako instrukcję "switch" na sterydach.

PODOBNE ARTYKUŁY