Jason. Cała informatyka w jednym miejscu!

Dręczy Was czym może być rozszerzenie w języku Kotlin? Zapraszam Was, a wszystko się wyjaśni w przyjemnym tempie. Jeśli z takim terminem się jeszcze nawet nie spotkaliście, tym bardziej zajrzyjcie do środka. Nie pożałujecie.

ROZSZERZENIE W JĘZYKU KOTLIN. TO NIE TO CO MYŚLISZ!

Informuję, że pojęcie mogące wprowadzać w dezinformację, nie dotyczy ani dziedziczenia, ani klas, ani żadnych rozszerzeń w kontekście rozszerzeń plików. W tym wypadku pisząc "rozszerzenie", mam na myśli implementację dodatkowych niestandardowych właściwości i metod do istniejących typów, takich jak "Int", "Double", "String" i wiele innych. Później, po utworzeniu zmiennej o odpowiednim typie, możemy skorzystać z naszej właściwości albo metody po zastosowaniu tego samego operatora kropki. Proszę o popatrzenie na przykład.

PRZYKŁAD KODU ŹRÓDŁOWEGO W POSTACI FUNKCJI

Jest taki dylemat. Chcecie na przykład zaprogramować konwertowanie liczby całkowitej na boolean’a, wartość logiczną przyjmującą prawdę albo fałsz. Ustalacie fakty, że cyfra 0 (zero) zwróci fałsz, a każda dowolna inna, prawdę. Można zabawiać się w funkcje zewnętrzne, ale lepiej będzie wyglądać rozszerzenie w języku Kotlin dla typu "Boolean". W praktyce, rozwiązanie naszego problemu (to lepsze rozwiązanie) może wyglądać tak:

fun Boolean.toInt(): Int = if(this) 1 else 0

Użyłem wyrażenia warunkowego, gdyby ktoś się pytał co to jest. Przykuję Waszą uwagę na drobne różnice w składni. Pierwsza znajduje się zaraz po słowie kluczowym "fun". To jest dopisek typu, do którego wprowadzamy niestandardową implementację. Druga rzecz to słowo kluczowe "this", referencja odnosząca się do wartości danego typu jaka będzie znajdować się w obiekcie tego samego typu. Jeżeli zastaniecie zmienną logiczną w takiej postaci:

val b = true

tym "this" będzie "true". A dla liczby całkowitej:

val x = 400

to będzie w tym przypadku liczba 400. Proste? Proste.

Rozszerzenie w języku Kotlin w postaci funkcji

Rozszerzenie w języku Kotlin dotyczy poszerzania możliwości obiektów istniejących typów poprzez dodawanie niestandardowej metody.

PRZYKŁAD KODU ŹRÓDŁOWEGO W POSTACI WŁAŚCIWOŚCI

Rozszerzenie w języku Kotlin może dotyczyć zarówno funkcji, jak i nowej danej składowej, która zostanie "przyklejona" do obiektów tego samego typu. Aby trzymać się tego samego przykładu i aby nie komplikować, załóżmy że zapragnęliśmy nagle konwersji w drugą stronę, czyli z liczby całkowitej na reprezentację w postaci wartości logicznej. W takiej sytuacji, moglibyśmy zastosować taki trik ale już jako właściwość:

val Int.booleanValue: Boolean
	get() = this != 0

I już! "getter" zamyka temat. A wywołanie moi mili, TAKIE SAME jak przy każdej innej danej składowej:

println((56).booleanValue)

To wszystko.

Rozszerzenie w języku Kotlin w postaci właściwości

Rozszerzenie obejmuje także dane składowe, zarówno ze słowem "var", jak i ze słowem "val"!


Zbierając wszystko do kupy, rozszerzenie w języku Kotlin to możliwość "doczepienia" dodatkowych implementacji do istniejących typów w postaci funkcji albo właściwości, bez tworzenia odrębnych klas. Nie ma żadnych udokumentowanych ograniczeń gdzie czego nie można więc możecie z tego korzystać do woli dla wszelkich istniejących typów. Na tę chwilę wystarczy informacji i dziękuję.

PODOBNE ARTYKUŁY