Kotlin posiada dużo przyjemnych w użyciu "skrótów" w postaci uprzednio przygotowanych struktur znanych z innych języków. Wyrażenie klasowe jakie występuje w języku Kotlin, to tylko jeden z wielu. Zapoznaj się z króciutkim materiałem opisującym co to w ogóle jest wraz z prostym przykładem kodu 🔎!
WYRAŻENIE KLASOWE W JĘZYKU KOTLIN "OPAKOWANIEM" ZBIORU DANYCH
Wiele razy będziesz potrzebować opakowania wielu zmiennych w jeden budulec dla lepszego zorganizowania. Na przykład jakieś dwie (lub więcej) wartości, które dotyczą jakiegoś konkretnego obiektu albo sytuacji w programie. Wtedy przyda Ci się to, co opisujemy - wyrażenie klasowe 😄. Nazywane też anonimowym obiektem, gdyż przypisujemy strukturę bezpośrednio do zmiennej (po znaku przypisania), stąd dobrze jest ją wprowadzić w kodzie w obrębie lokalnym (gdy jest potrzebna tymczasowo).
Wyrażenie klasowe bardzo przypomina strukturę z języka C ("struct"), a to dlatego, że po znaku przypisania i podaniu słowa "object", otwieramy klamerki i wewnątrz nich wprowadzamy zmienne. Brzmi znajomo 🙂?
Przykład kodu źródłowego
Załóżmy, że tworzymy grę i mamy dane dotyczące gracza. Powiedzmy, że są dwie liczby: jedna 1️⃣ oznacza liczbę porządkową (numer) gracza, a druga 2️⃣ liczbę zdobytych punktów po sesji. Wtedy, zamiast pisać na zewnątrz 2 razy "val" lub "var" ("playerOrdinalNumber" i "playerScore") i ryzykować, że mogą być w różnych miejscach kodu oddalone od siebie, możemy zdefiniować wyrażenie klasowe i niejako "związać" te dane jedną strukturą ❤️.
Robimy to tak 👇:
val playerData = object {
val ordinalNumber = 1
val score = 5000
}A wywoływanie? Operator kropki? Wszystko takie same, jak w C 😁. Przykład użycia z "println":
println("Wynik gracza nr ${playerData.number}: ${playerData.score}")Wyrażenie klasowe może mieć też w sobie funkcje! Postępujemy analogicznie, jak przy klasie – nie ma żadnych "kruczków" 😉. Tak definicja:
val playerData = object {
val ordinalNumber = 1
val score = 5000
fun doSomething() {
}
}a tak wywołanie:
playerData.doSomething()Wyrażenie klasowe w języku Kotlin jest tożsame z tworzeniem anonimowej klasy wewnętrznej w języku Java, stąd podkreślenie na początku, że jest to przydatne, gdy trzeba coś zdefiniować tymczasowo bądź w jedynym miejscu w kodzie całego programu ℹ️. Kojarzysz metodę "addListener" (albo o podobnej nazwie), a potem klamerki i implementacja metod wymaganych przez interfejs 🤔? To jest dokładnie to samo.
![]() |
Wyrażenie klasowe do złudzenia przypominające "struct" w języku C, służy do opakowywania wielu danych w jeden budulec! Może też posiadać własne funkcje!
Dotarliśmy do końca 🏁! Niby mała rzecz, a będzie dobrze zobaczyć, że wiesz na czym polega organizacja danych 👍.
