Kotlina ciąg dalszy! Zakładam, że przeczytaliście poprzedni artykuł zanim podejdziecie do obecnego. Oto druga część tłumaczenia natury zmiennych w tym języku, a dzisiaj będziemy kontynuować zagadnienie związane ze stwierdzeniem, że "wszystko jest obiektem". Dowiecie się jakie drugie dno się za tym kryje i jakie skutki wiążą się z tym, że każda zmienna w języku Kotlin jest obiektem! Programowanie również może zaskakiwać!

JESZCZE RAZ O SŁOWIE KLUCZOWYM "VAL"

Wracając do poprzedniego artykułu, wiecie już że "val" sprawia, że wartość zmiennej stanie się niemodyfikowalna jak stała. Zmienna w języku Kotlin definiowana przy pomocy tego słowa staje się w rzeczywistości bardziej stałą niż zmienną:

val x = 10

x = 5			// błąd

Jednak...czy rzeczywiście to oznacza, że "val" działa całkowicie jak stała? Nie jest tak do końca. Tutaj znów zwrócę się do użytkowników Javy.

Pamiętacie słówko "final"? Ono umożliwiało definiowanie stałych w języku Java. Natomiast przypomnijcie sobie co się działo kiedy do takiej stałej wprowadziliście obiekt. Czy mając zdefiniowany obiekt z modyfikatorem "final" nie mogliście w jakikolwiek sposób wpływać na dane składowe? Mogliście! Jedyną "niemożnością" było przypisanie nowej REFERENCJI do tej stałej, ale sam obiekt był modyfikowalny.

Tu jest tak samo. "val" nie pozwoli Wam zmienić samej stricte wartości, gdyż to jest adres do obiektu (dotyczy to nawet takich typów prostych jak liczby). Jednakże to nie oznacza, że to zablokowanie sięga całego obiektu i jego danych składowych. O ile nie w głowie Wam przypisanie nowej referencji, nadal możecie wpływać na stan obiektu i modyfikować jego dane.

Zatem...dlaczego nie możemy przypisać nowej wartości typu prostego? Bo on sam także jest obiektem! Liczba 10 jest obiektem. Każda inna zmienna w języku Kotlin jest obiektem. Przypisując nową wartość liczbową, tworzycie cały nowy obiekt! Wówczas zmienna "rozstaje się" z poprzednią referencją i "podpina" sobie nową wskazującą na obiekt typu "Int" o innej wartości.

Przypisanie nowej referencji w języku Kotlin

Typy proste nie są "prostymi" tak jak w Javie! One również są obiektami! Dlatego też ponowne przypisanie liczby oznacza w rzeczywistości utworzenie nowego obiektu typu "liczba całkowita" o podanej wartości i przypisanie nowej referencji!

DOWÓD, ŻE ZMIENNA W JĘZYKU KOTLIN JEST OBIEKTEM!

Powyższe tłumaczenie jest niewystarczające? Spoko. Pokażę Wam dowód.

TYPY PROSTE MAJĄ FUNKCJE!

Wiecie, że w Kotlinie nawet zwykły "Int" posiada zestaw własnych funkcji? Nie, nie…w Javie by to nie przeszło, lecz tutaj znajdziecie kilka funkcji, które możecie wywołać z poziomu liczby całkowitej! Oto przykład:

var x = 5

println(x.toLong())

Widzicie? Ten sam znany operator kropki za pomocą którego dostajemy się do metod i danych składowych, o ile są publiczne. Jeśli ten kod jest prawidłowy, to znaczy że mamy do czynienia z obiektem, gdyż tylko on może posiadać dane składowe i metody!

Drodzy użytkownicy Javy! Nie musicie w Kotlinie wykonywać rzutowania typów ani korzystać ze statycznych metod. Ponieważ każda zmienna w języku Kotlin jest obiektem, bez problemu wywołacie szereg dostępnych metod z poziomu zmiennej typu "integer". I z typu "float", "char" czy "string"...z każdego.

Zmienna w języku Kotlin jako obiekt

Słowo kluczowe "val" nie zezwala na przypisywanie nowej referencji do tego samego miejsca w pamięci, natomiast nadal możemy wpływać na sam obiekt modyfikując jego dane składowe. W Kotlinie, nawet typy proste posiadają w sobie zestaw metod, zatem zmienna musi być obiektem!


Zdecydowałem się odseparować ten wątek od poprzedniego wpisu, gdyż chciałem abyście zwrócili na to większą uwagę. Każda zmienna w języku Kotlin jest obiektem, nawet gdy reprezentuje typ prosty, taki jak "integer". W mojej skromnej ocenie, rozumienie tego zjawiska jest istotne, szczególnie dla ludzi chcących programować po mistrzowsku. Będę to powtarzać jak mantrę i zdania nie zmienię. Prawdziwy programista nie pisze kodu tylko tak, żeby działał ale żeby on działał efektywnie, był bardzo czytelny i był nadal rozwijany będąc świadomym dlaczego musi być tak, a nie inaczej. Dziękuję za przeczytanie, to wszystko.

PODOBNE ARTYKUŁY