Jason. Cała informatyka w jednym miejscu!

Witam wszystkich w moim kolejnym artykule z cyklu nauki języka Kotlin. Teraz przyjrzymy się budowie tablicy, jak utworzyć tablicę, jaki jest jej typ danych, a także dowiecie się jak uzyskiwać dostęp do pojedynczych argumentów przy pomocy indeksu. Tablice w języku Kotlin wyglądają zupełnie inaczej w stosunku do Javy, jeśli chodzi o sposób zapisu!

JAK DEFINIOWANE SĄ TABLICE W JĘZYKU KOTLIN?

Na sam początek przyjrzyjmy się deklaracji. Jeśli chcemy zainicjować tablicę wartościami (to znaczy wypełnić początkowymi danymi), po znaku równości piszemy "arrayOf", otwieramy nawiasy okrągłe i podajemy wartości po przecinku trzymając się jednego typu danych! Oto przykładowa tablica:

val numbers = arrayOf(13, 56, 78)

Zobaczmy teraz jak daleko możemy się posunąć w kwestii modyfikacji.

MODYFIKACJA ZAWARTOŚCI

Naturalnie, że można przypisać ponownie nową serię liczb przy pomocy "arrayOf", o ile korzystacie ze słowa kluczowego "var". Natomiast nie ma możliwości dodawania lub usuwania argumentów. Raz przypisanej długości już nie będzie można zmienić i to jest zapewne już wiadome doświadczonym programistom Javy. Takie "bajery" są dostępne w liście modyfikowalnej. Mamy jednak wpływ na same argumenty. Przyjrzyjcie się temu:

numbers[1] = -140

W celu zmiany wartości któregokolwiek z argumentów, po nazwie tablicy dodajecie indeks – identyfikator liczbowy określający występowanie w określonym miejscu w tablicy. Tak jak w Javie indeksy są liczone od zera, tak i tutaj tablice w języku Kotlin "rozpoczynają odliczanie od zera". Indeks pierwszy oznaczać zatem będzie dostanie się do drugiego argumentu tablicy. Po podanym indeksie w nawiasach kwadratowych, dajecie znak przypisania, wstawiacie nową wartość TEGO SAMEGO TYPU i gicior.

Miejcie się jednak na baczności kiedy używacie stałej liczbowej do określania indeksu! Tablice w języku Kotlin nie posiadają żadnej wbudowanej ochrony na głupoty programistów. W przypadku, gdy się pomylicie i wyjdziecie poza "ramy" tablicy, program się wysypie i zostanie zgłoszony wyjątek.

Wyjątek po przekroczeniu zakresu tablicy w języku Kotlin

Próba "wyjścia" poza tablicę przy pomocy indeksu i przeprowadzenia dowolnej manipulacji spowoduje zgłoszenie przez język wyjątku.

Ostatnia informacja na temat modyfikacji, która może być zaskakująca. Wartości tablicy możecie dowolnie modyfikować, nawet kiedy zdefiniowaliście ją przy pomocy "val"! Jest to możliwe dlatego, iż "val" nie zezwala jedynie na przypisywanie nowych referencji o czym było już pisane parę wpisów temu. Ponieważ przypisywanie nowego argumentu do tablicy nie powoduje zmiany adresu, język w żaden sposób się nie sprzeciwi co do Waszych intencji, chyba że planujecie zdefiniować całkowicie nową tablicę przy pomocy funkcji "arrayOf". Póki zmieniacie jedynie argumenty, wszystko będzie akceptowane.

TABLICE SĄ TYPU "ARRAY"

Typ danych tablicy jest dwuczęściowy. Zawsze zaczyna się od słowa "Array" pisanego wielką literą, a w środku nawiasów ostrych (czy kątowych, jak kto woli) wprowadzamy jeden z typów podstawowych. W naszym przypadku takim jest "Int" więc kompilator drogą dedukcji zauważy, że jeśli definiujemy taką tablicę:

val numbers = arrayOf(13, 56, 78)

to podstawi typ "Array<Int>" i w efekcie końcowym powstanie za kulisami taki komplet:

val numbers: Array<Int> = arrayOf(13, 56, 78)

W ten sposób, tablice w języku Kotlin "nie patrzą" na to, jakie dane tam będą, bo to mogą być nawet instancje własnej klasy. Ważne jest tylko to, aby przez cały kod trzymać się jednego typu danych. Jak deklarujemy, że chcemy mieć liczby całkowite, to wprowadzamy wyłącznie dane typu "Int". Kiedy potrzebne nam są wartości logiczne:

val booleans: Array<Boolean> = arrayOf(false, true)

to nie przychodzi nam na myśl wstawienie literału znakowego (kompilator uzna to za błąd ze względu na zapewnienie bezpieczeństwa). Restrykcja pojawia się jedynie w typie danych argumentów.

Modyfikacja wartości tablicy w języku Kotlin

Tablica jest całym obiektem przechowującym wiele innych obiektów. Z tego powodu ograniczenie wynikające ze słowa kluczowego "val" sięga jedynie podstawiania nowej tablicy, natomiast wartości są jak najbardziej edytowalne.

"MAGIA" PODSTAWIENIA DOWOLNEGO TYPU DANYCH DLA ARGUMENTÓW

Zastanawiacie się jakim cudem można sobie "wybrać" dowolny typ danych i wstawiać wiele wartości do jednego kontenera? Nawiasy kątowe w języku Kotlin oznaczają typ generyczny ("generic"). To jest jeden z bardziej zaawansowanych tematów i szczegóły opisuję w odrębnym artykule. Na tę chwilę wystarczy Wam tylko taka informacja, że to programowanie generyczne "stoi" za wstawianiem dowolnego typu danych do tablicy lub kolekcji.


Tym sposobem zakończyliśmy sobie opowieść o najbardziej podstawowych informacjach jak definiowane są tablice w języku Kotlin, jak określa się ich typ, jak daleko możemy wpływać na ich dane oraz czemu mamy prawo je modyfikować, nawet po zdefiniowaniu z użyciem słowa kluczowego "val".

PODOBNE ARTYKUŁY