Pętle w Kotlinie na 12 sposobów

Pętle. Jedna z najbardziej podstawowych konstrukcji w każdym obiektowym języku programowania. Kiedy zaczynamy swoją naukę programowania, to jest generalnie temat numer trzy: zmienne, ify, oraz pętle. W Kotlinie też oczywiście są. Ale są podane w nieco odświeżonej formie i to o tym chciałem dzisiaj napisać. Zapraszam do lektury.

While i do-while

Z kronikarskiego obowiązku na początek wspomnę o tych dwóch. Nie różnią się niczym od tego co znaliśmy już wcześniej, czyli pętla while wygląda tak:

Warto zwrócić uwagę na Kotlinową składnię: słówko var oznacza zmienną, do drukowania używamy print, w Kotlinie w Stringach można referować do zmiennych przez znak dolara, nie ma średnika na końcu. Kilka linii a tyle udogodnień względem np javy. Z kolei pętla do while wygląda tak:

Najlepiej różnicę między tymi dwoma wyjaśnia ten mem:

Więc generalnie, nie mam już tutaj nic do dodania. 2 sposoby za nami.

For

No i tutaj zaczynają pojawiać się różnicę. Klasyczna pętla for w Kotlinie wygląda tak:

Ponownie odnosząc się do javy, nie musimy podawać jakim typem iterujemy, język przecież to wie. A gdybyśmy tam mieli np mapę (gdzie indeksy mogą być różne, nie muszą być cyframi od 0) i chcielibyśmy iterować po indeksach? Ależ proszę:

Fajnie, prawda? A teraz najfajniejsze, w pętli for możemy sobie wydrukować np indeks i wartość w jednym obrocie. A jak? Ano tak:

No i przyznam szczerze, że takiej konstrukcji w żadnym innym języku nie widziałem. A wygląda bardzo przejrzyście, prawda? Tak więc, kolejne 3 sposoby za nami.

For 2

Dobra, wiemy już wygląda iterowanie po kolekcji, a jak możemy sobie iterować po wartościach? Np tak:

Kod wygląda konsekwentnie bez względu na to, czy iterujemy po wartościach, czy po kolekcji prawda? Tak wygląda pętla iterująca w górę, z kolei pętla iterująca w dół:

Mamy tutaj operator downTo, te dwie kropki z kolei nazywają się rangeTo. Mamy jeszcze jedno słówko kluczowe (właściwie funkcję), mianowicie step, oznaczające jak można się domyślić, jaki ma być krok pętli.

To może jeszcze jedno słówko kluczowe (ponownie, funkcja), mianowicie until

Do czego ono służy? Ano do kończenia wywołania na wartości o jeden mniejszej niż podana. Po co? Żeby nie pisać już size-1 iterując po jakiejś kolekcji. Tak więc kolejne 4 sposoby za nami.

Repeat

Kotlin zawiera też oczywiście pętle foreach, która wygląda tak:

Poznajmy zatem słówko kluczowe it, które odnosi się do aktualnie przetwarzanego argumentu. A skoro już je znamy, to pokażę jeszcze jedną metodę (a właściwie funkcję)

Prawda, że fajne? Przekazujemy w nawiasach klamrowych funkcję która ma się wykonać określoną ilość razy. Takie rzeczy tylko w Kotlinie. Kolejne 2 sposoby za nami.

Więcej

Mało? W takim razie stwórz swoje własne. Jak? Kotlin pozwala na przeciążanie operatorów. Innymi słowy masz własny obiekt po którym potrzebujesz jakiejś charakterystycznej iteracji? Napisz ją, operatory downTo, oraz rangeTo są przeciążalne, innymi słowy w Twoim scenariuszu mogą robić dokładnie to, czego potrzebujesz.

Reasumując

Pętle wyglądają i działają nieco inaczej, niż w pozostałych językach programowania. Ale rozumiem te decyzje, są spowodowane chęcią utrzymania spójności, oraz dodaniem możliwości przeciążania operatorów. A może chciałbyś dowiedzieć się więcej o Kotlinie? Jeśli tak, to już dzisiaj (tj. 25.03 o 15:00) będę prowadził webinar, gdzie opowiem znacznie więcej np o programowaniu funkcyjnym i funkcjach wyższego rzędu, czy o null-safety na poziomie typów. Śmiało dołącz, nie pożałujesz, będzie dużo mięska:

https://eduzo.pl/sekretykotlin