Kotlin – pierwsze starcie – Barnsley Fern

Kotlin dołączył do oficjalnych języków programowania aplikacji na Androida, więc postanowiłam sobie, że coś w nim napiszę. Miało być szybkie i niekoniecznie funkcjonalne. Ot, taka apka żeby zapoznać się troszkę z nowym językiem programowania. Padło na Paproć Barnsleya.

Zaczęłam od ściągnięcia Android Studio w wersji 3.0, a taki jest efekt po kilku dniach klepania kodu 😉

To co jest fajne w Kotlinie to to, że nie muszę już wywoływać funkcji 'findViewById(R.id.seekBar)’, tylko od razu mogę użyć ID – poniżej ustawianie listenera dla obiektu o id seekBar:

https://gist.github.com/jezinka/9e0b96d5c152daded786ef86399f6f36

Z innych ciekawostek: ? po nazwie typu sprawia, że ten SeekBar będzie mógł być nullem.

Udało mi się stworzyć własną klasę FernView, dziedziczący po View. Wykorzystałam ją do rysowania na canvasie pikseli paprotki. Kotlin udostępnia szczególną składnię jeśli chodzi o konstruktory 😉

https://gist.github.com/jezinka/5f27bbef562198b4473abdd58da74bd6

Różnica między var a val? val to takie javowe final. Jak raz się coś przypisze do takiej zmiennej to nie ma mowy żeby ją przepisać na coś innego.

Drugi konstruktor zawierający w parametrze Attribute set jest potrzebny po to, żeby można było ten widok zadeklarować w xmlu, który nie zmienia się niezależnie od tego, z którego języka się korzysta 😉

https://gist.github.com/jezinka/dce63423b8a0556e402b9e48af1ef508

Samo tworzenie paproci nie jest jakoś specjalnie skomplikowane. Są 4 funkcje wyliczające współrzędne x i y kolejnego punktu. Funkcje wybierane są z odgórnie ustalonym prawdopodobieństwem.

https://gist.github.com/jezinka/25df03832d4e0c9c9c677837e344e886

I znowu dziwny operator: !! -> to wyrzuca Null Pointer Exception 😉

Jak wyglądają funkcje wyliczające współrzędne kolejnych punktów:

https://gist.github.com/jezinka/8b359c7d2aa0183e9972bc178d6786d2

W programie użyłam znalezionego na angielskiej wikipedii zapisu prawdopodobieństw i składników wyrażeń.Dzięki temu mogłam dodawać kolejne wariacje paprotki bez dodawania za dużej liczby linijek kodu. I mogłam się przy okazji dowiedzieć jak używa się HashMap w Kotlinie:

https://gist.github.com/jezinka/d9acdf43ce47d17f85554ac578a17f04

Pierwsze wrażenie ogólnie dobre. Choć były momenty kiedy kompilator krzyczał do mnie: Array<Float> is not a FloatArray! Zastanawiam się jaką aplikację mogłabym jeszcze napisać z wykorzystaniem Kotlina, ale na ten moment brak mi pomysłów 😉

Cały kod dostępny na githubie: https://github.com/jezinka/BarnsleyFern

Wytłumaczenie tych wszystkich operatorów dotyczących null-safe tu: http://kotlinlang.org/docs/reference/null-safety.html#null-safety

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.