Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00045 006289 19031101 na godz. na dobę w sumie
Programowanie w języku Kotlin. The Big Nerd Ranch Guide - książka
Programowanie w języku Kotlin. The Big Nerd Ranch Guide - książka
Autor: , Liczba stron: 408
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-5536-1 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> inne - programowanie
Porównaj ceny (książka, ebook (-35%), audiobook).

Gdy w 2017 roku na konferencji Google ogłoszono, że Kotlin jest jednym z oficjalnie wspieranych języków programowania aplikacji dla Androida, język ten błyskawicznie stał się popularny. Najpoważniejsze firmy technologiczne doceniają jego zalety, takie jak zwarta składnia i integracja z kodem Javy. Co ważne, twórcy Kotlina czerpali z doświadczeń projektantów Javy i zapewnili, że te dwa języki są ze sobą ściśle powiązane. W ten sposób świeżość rozwiązań i nowoczesne mechanizmy zostały znakomicie połączone z najlepszymi cechami Javy, a Kotlin stał się wszechstronnym wieloplatformowym językiem programowania.

Ta książka jest przeznaczona dla programistów, którzy chcą poznać język o możliwościach wykraczających poza Javę i pisać solidne aplikacje dla różnych platform. Pozwala w praktyczny sposób zapoznać się z unikalnymi możliwościami Kotlina i - na podstawie licznych przykładowych projektów - stopniowo zgłębiać złożone zagadnienia. Znakomitym uzupełnieniem prezentowanych treści są informacje o wewnętrznych mechanizmach działania języka wraz z ćwiczeniami do samodzielnego wykonania. Dzięki tej książce nawet początkujący programista szybko zacznie pisać efektywne i solidne aplikacje, które będą służyć użytkownikom różnych platform.

W tej książce między innymi:

Big Nerd Ranch mieści się w Atlancie w USA. Firma została założona w 2001 roku przez Aarona Hillegassa, znakomitego programistę i trenera programowania. Jej misją jest krzewienie wiedzy o rozwijających się technologiach mobilnych. Słynie ze świetnych szkoleń i znakomitych trenerów.

Kotlin: najlepsze rozwiązania nie tylko dla Androida!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Kotlin Programming: The Big Nerd Ranch Guide Tłumaczenie: Piotr Rajca ISBN: 978-83-283-5536-1 Authorized translation from the English language edition, entitled KOTLIN PROGRAMMING: THE BIG NERD RANCH GUIDE, 1st Edition by SKEEN, JOSH; GREENHALGH, DAVID; published by Pearson Education, Inc, publishing as The Big Nerd Ranch Guides. Copyright © 2018 Big Nerd Ranch, LLC All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education Inc. Polish language edition published by HELION S.A. Copyright © 2019. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock Images LLC. Helion SA ul. Kościuszki 1c, 44-100 Gliwice tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/prokot.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/prokot Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność (cid:54)(cid:83)(cid:76)(cid:86)(cid:3)(cid:87)(cid:85)(cid:72)(cid:285)(cid:70)(cid:76) (cid:20)(cid:3) (cid:21)(cid:3) (cid:51)(cid:82)(cid:71)(cid:93)(cid:76)(cid:219)(cid:78)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:68)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:20)(cid:22) (cid:51)(cid:85)(cid:93)(cid:72)(cid:71)(cid:86)(cid:87)(cid:68)(cid:90)(cid:76)(cid:72)(cid:81)(cid:76)(cid:72)(cid:3)(cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:68)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:20)(cid:24) Dlaczego Kotlin? ...................................................................................................................................15 Dla kogo jest przeznaczona ta książka? .............................................................................................16 Jak korzystać z tej książki? ...................................................................................................................16 Dla ciekawskich .............................................................................................................................17 Wyzwania .......................................................................................................................................17 Konwencje typograficzne .............................................................................................................17 Patrząc w przyszłość .............................................................................................................................17 (cid:51)(cid:76)(cid:72)(cid:85)(cid:90)(cid:86)(cid:93)(cid:68)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:68)(cid:3)(cid:90)(cid:3)(cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:76)(cid:72)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:20)(cid:28) Instalowanie IntelliJ IDEA ..................................................................................................................19 Pierwszy projekt programu w Kotlinie .............................................................................................20 Tworzenie pierwszego pliku źródłowego w Kotlinie ...............................................................25 Wykonywanie pliku źródłowego ................................................................................................27 Kotlin REPL ...........................................................................................................................................29 Dla ciekawskich: Dlaczego warto używać właśnie IntelliJ? ............................................................30 Dla ciekawskich: Pisanie kodu przeznaczonego na JVM ...............................................................31 Wyzwanie: Arytmetyka REPL ............................................................................................................32 (cid:61)(cid:80)(cid:76)(cid:72)(cid:81)(cid:81)(cid:72)(cid:15)(cid:3)(cid:86)(cid:87)(cid:68)(cid:260)(cid:72)(cid:3)(cid:76)(cid:3)(cid:87)(cid:92)(cid:83)(cid:92)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:22)(cid:22) Typy ........................................................................................................................................................33 Deklarowanie zmiennych ....................................................................................................................34 Wbudowane typy języka Kotlin .........................................................................................................36 Zmienne tylko do odczytu ..................................................................................................................37 Wnioskowanie typów ..........................................................................................................................40 Stałe czasu kompilacji ..........................................................................................................................41 Oglądanie kodów bajtowych ...............................................................................................................42 Dla ciekawskich: Podstawowe typy danych Javy w Kotlinie ..........................................................45 Wyzwanie: hasSteed .............................................................................................................................46 Wyzwanie: Szynk Hipolit’a .................................................................................................................46 Wyzwanie: Magiczne lustro ................................................................................................................46 Kup książkęPoleć książkę (cid:51)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:90)(cid:3)(cid:77)(cid:219)(cid:93)(cid:92)(cid:78)(cid:88)(cid:3)(cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:17)(cid:3)(cid:55)(cid:75)(cid:72)(cid:3)(cid:37)(cid:76)(cid:74)(cid:3)(cid:49)(cid:72)(cid:85)(cid:71)(cid:3)(cid:53)(cid:68)(cid:81)(cid:70)(cid:75)(cid:3)(cid:42)(cid:88)(cid:76)(cid:71)(cid:72) (cid:22)(cid:3) (cid:23)(cid:3) (cid:24)(cid:3) (cid:44)(cid:81)(cid:86)(cid:87)(cid:85)(cid:88)(cid:78)(cid:70)(cid:77)(cid:72)(cid:3)(cid:90)(cid:68)(cid:85)(cid:88)(cid:81)(cid:78)(cid:82)(cid:90)(cid:72)(cid:3) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:23)(cid:26) Instrukcje if/else ....................................................................................................................................47 Dodawanie kolejnych warunków ................................................................................................50 Zagnieżdżone instrukcje if/else ...................................................................................................52 Bardziej eleganckie wyrażenia warunkowe ...............................................................................53 Zakresy ...................................................................................................................................................59 Wyrażenia when ...................................................................................................................................60 Szablony łańcuchowe ...........................................................................................................................62 Wyzwanie: Eksperymenty z zakresami .............................................................................................64 Wyzwanie: Rozbudowa aury ..............................................................................................................64 Wyzwanie: Konfigurowalny format statusu .....................................................................................65 (cid:41)(cid:88)(cid:81)(cid:78)(cid:70)(cid:77)(cid:72)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:25)(cid:26) Wyodrębnianie kodu do funkcji ........................................................................................................67 Anatomia funkcji ..................................................................................................................................69 Nagłówek funkcji ...........................................................................................................................70 Ciało funkcji ...................................................................................................................................72 Zasięg funkcji .................................................................................................................................73 Wywoływanie funkcji ..........................................................................................................................74 Refaktoryzacja funkcji .........................................................................................................................75 Pisanie własnych funkcji .....................................................................................................................76 Argumenty domyślne ..........................................................................................................................78 Funkcje jednowyrażeniowe .................................................................................................................79 Funkcje typu Unit .................................................................................................................................80 Nazwane argumenty funkcji ...............................................................................................................81 Dla ciekawskich: Typ Nothing ...........................................................................................................82 Dla ciekawskich: Funkcje plikowe w Javie ........................................................................................83 Dla ciekawskich: Przeciążanie funkcji ...............................................................................................84 Dla ciekawskich: Nazwy funkcji w odwrotnych apostrofach ........................................................85 Wyzwanie: Funkcje jednowyrażeniowe ............................................................................................87 Wyzwanie: Poziom upojenia magicznego ........................................................................................87 Wyzwanie: Status upojenia magicznego ...........................................................................................87 (cid:41)(cid:88)(cid:81)(cid:78)(cid:70)(cid:77)(cid:72)(cid:3)(cid:68)(cid:81)(cid:82)(cid:81)(cid:76)(cid:80)(cid:82)(cid:90)(cid:72)(cid:3)(cid:76)(cid:3)(cid:87)(cid:92)(cid:83)(cid:3)(cid:73)(cid:88)(cid:81)(cid:78)(cid:70)(cid:92)(cid:77)(cid:81)(cid:92)(cid:3) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:27)(cid:28) Funkcje anonimowe .............................................................................................................................89 Typ funkcyjny ................................................................................................................................91 Niejawne instrukcje return ..........................................................................................................92 Argumenty funkcyjne ...................................................................................................................92 Słowo kluczowe it ..........................................................................................................................93 Akceptowanie wielu argumentów ...............................................................................................94 Wsparcie dla wnioskowania typów ...................................................................................................95 Definiowanie funkcji akceptujących inne funkcje ...........................................................................96 Składnia skrócona .........................................................................................................................97 Wpisywanie funkcji ..............................................................................................................................98 Referencje funkcji .................................................................................................................................99 Typ funkcyjny jako typ wyniku ........................................................................................................100 Dla ciekawskich: Funkcje lambda w Kotlinie są domknięciami .................................................102 Dla ciekawskich: Funkcje lambda a anonimowe klasy wewnętrzne ...........................................102 (cid:25) Kup książkęPoleć książkę (cid:54)(cid:83)(cid:76)(cid:86)(cid:3)(cid:87)(cid:85)(cid:72)(cid:285)(cid:70)(cid:76) (cid:25)(cid:3) (cid:26)(cid:3) (cid:27)(cid:3) (cid:28)(cid:3) (cid:37)(cid:72)(cid:93)(cid:83)(cid:76)(cid:72)(cid:70)(cid:93)(cid:72)(cid:262)(cid:86)(cid:87)(cid:90)(cid:82)(cid:3)(cid:90)(cid:68)(cid:85)(cid:87)(cid:82)(cid:285)(cid:70)(cid:76)(cid:3)(cid:83)(cid:88)(cid:86)(cid:87)(cid:92)(cid:70)(cid:75)(cid:3)(cid:76)(cid:3)(cid:90)(cid:92)(cid:77)(cid:199)(cid:87)(cid:78)(cid:76)(cid:3) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:19)(cid:24) Akceptowanie wartości pustych .......................................................................................................105 Jawny typ null w Kotlinie ..................................................................................................................107 W czasie kompilacji czy w czasie wykonywania? ..........................................................................108 Bezpieczeństwo wartości pustych ....................................................................................................109 Opcja pierwsza: bezpieczny operator wywołania ...................................................................110 Opcja druga: operator podwójnego wykrzyknika ..................................................................111 Opcja trzecia: użycie if do sprawdzania, czy wartość jest równa null ..................................112 Wyjątki .................................................................................................................................................115 Zgłaszanie wyjątków ...................................................................................................................116 Niestandardowe wyjątki .............................................................................................................117 Obsługa wyjątków .......................................................................................................................118 Warunki wstępne ...............................................................................................................................120 Null: do czego się przydaje? ..............................................................................................................122 Dla ciekawskich: Wyjątki sprawdzane i niesprawdzane ...............................................................123 Dla ciekawskich: Jak wymuszana jest możliwość stosowania wartości null? ............................123 (cid:259)(cid:68)(cid:262)(cid:70)(cid:88)(cid:70)(cid:75)(cid:92)(cid:3) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:21)(cid:24) Pobieranie fragmentów łańcuchów .................................................................................................125 Funkcja substring ........................................................................................................................125 Funkcja split .................................................................................................................................127 Operacje na łańcuchach ....................................................................................................................129 Łańcuchy są niezmienne ............................................................................................................131 Porównywanie łańcuchów ................................................................................................................131 Dla ciekawskich: Unicode .................................................................................................................133 Dla ciekawskich: Przeglądanie znaków w łańcuchu ......................................................................133 Wyzwanie: Usprawnianie smoczej mowy ......................................................................................134 (cid:47)(cid:76)(cid:70)(cid:93)(cid:69)(cid:92)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:22)(cid:24) Typy liczbowe .....................................................................................................................................135 Liczby całkowite .................................................................................................................................136 Liczby dziesiętne .................................................................................................................................138 Konwersja łańcuchów na typy liczbowe .........................................................................................138 Konwersja typu Int na Double .........................................................................................................139 Formatowanie wartości typu Double ..............................................................................................141 Konwertowanie wartości typu Double na Int ................................................................................142 Dla ciekawskich: Operacje bitowe ...................................................................................................143 Wyzwanie: Pozostałe kwaterki .........................................................................................................144 Wyzwanie: Obsługa ujemnego stanu sakiewki ..............................................................................144 Wyzwanie: Smoczykojn .....................................................................................................................145 (cid:41)(cid:88)(cid:81)(cid:78)(cid:70)(cid:77)(cid:72)(cid:3)(cid:86)(cid:87)(cid:68)(cid:81)(cid:71)(cid:68)(cid:85)(cid:71)(cid:82)(cid:90)(cid:72)(cid:3) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:23)(cid:26) Funkcja apply ......................................................................................................................................147 Funkcja let ...........................................................................................................................................148 Funkcja run .........................................................................................................................................149 (cid:26) Kup książkęPoleć książkę (cid:51)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:90)(cid:3)(cid:77)(cid:219)(cid:93)(cid:92)(cid:78)(cid:88)(cid:3)(cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:17)(cid:3)(cid:55)(cid:75)(cid:72)(cid:3)(cid:37)(cid:76)(cid:74)(cid:3)(cid:49)(cid:72)(cid:85)(cid:71)(cid:3)(cid:53)(cid:68)(cid:81)(cid:70)(cid:75)(cid:3)(cid:42)(cid:88)(cid:76)(cid:71)(cid:72) Funkcja with ........................................................................................................................................150 Funkcja also .........................................................................................................................................151 Funkcja takeIf ......................................................................................................................................151 Funkcja takeUnless .....................................................................................................................152 Stosowanie funkcji standardowych .................................................................................................152 (cid:20)(cid:19)(cid:3) (cid:47)(cid:76)(cid:86)(cid:87)(cid:92)(cid:3)(cid:76)(cid:3)(cid:93)(cid:69)(cid:76)(cid:82)(cid:85)(cid:92)(cid:3) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:24)(cid:24) Listy ......................................................................................................................................................155 Dostęp do elementów listy .........................................................................................................157 Zmienianie zawartości listy ........................................................................................................159 Iteracja ..................................................................................................................................................163 Wczytywanie pliku do listy ...............................................................................................................167 Destrukturyzacja .................................................................................................................................169 Zbiory ...................................................................................................................................................169 Tworzenie zbiorów ......................................................................................................................169 Dodawanie elementów do zbioru .............................................................................................171 Pętle while ............................................................................................................................................173 Wyrażenie break .................................................................................................................................175 Konwersje kolekcji .............................................................................................................................175 Dla ciekawskich: Typy tablicowe .....................................................................................................176 Dla ciekawskich: Tylko do odczytu a niezmienny .........................................................................177 Wyzwanie: Formatowanie menu gospody .....................................................................................178 Wyzwanie: Zaawansowane formatowanie menu ..........................................................................179 (cid:20)(cid:20)(cid:3) (cid:48)(cid:68)(cid:83)(cid:92)(cid:3) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:27)(cid:20) Tworzenie map ...................................................................................................................................181 Dostęp do wartości mapy ..................................................................................................................183 Dodawanie elementów do map ........................................................................................................183 Modyfikowanie wartości mapy ........................................................................................................186 Wyzwanie: Wykidajło ........................................................................................................................190 (cid:20)(cid:21)(cid:3) (cid:39)(cid:72)(cid:73)(cid:76)(cid:81)(cid:76)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:78)(cid:79)(cid:68)(cid:86)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:28)(cid:20) Definiowanie klasy .............................................................................................................................191 Tworzenie instancji ............................................................................................................................191 Funkcje klasowe ..................................................................................................................................192 Widoczność i hermetyzacja ..............................................................................................................194 Właściwości klas .................................................................................................................................195 Akcesory get i set i ich właściwości ...........................................................................................197 Widoczność właściwości ............................................................................................................200 Właściwości obliczane ................................................................................................................200 Refaktoryzacja kodu projektu NyetHack ........................................................................................201 Stosowanie pakietów ..........................................................................................................................209 Dla ciekawskich: Bliższe spojrzenie na właściwości var i val .......................................................210 Dla ciekawskich: Zapobieganie występowaniu wyścigu ...............................................................213 Dla ciekawskich: prywatny w pakiecie ............................................................................................214 (cid:27) Kup książkęPoleć książkę (cid:54)(cid:83)(cid:76)(cid:86)(cid:3)(cid:87)(cid:85)(cid:72)(cid:285)(cid:70)(cid:76) (cid:20)(cid:22)(cid:3) (cid:44)(cid:81)(cid:76)(cid:70)(cid:77)(cid:68)(cid:79)(cid:76)(cid:93)(cid:68)(cid:70)(cid:77)(cid:68)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:21)(cid:20)(cid:26) Konstruktory .......................................................................................................................................218 Konstruktory podstawowe .........................................................................................................218 Definiowanie właściwości w konstruktorze podstawowym ..................................................219 Konstruktory dodatkowe ...........................................................................................................220 Argumenty domyślne .................................................................................................................221 Argumenty nazwane ...................................................................................................................222 Blok inicjalizatora ...............................................................................................................................223 Inicjalizacja właściwości ....................................................................................................................224 Kolejność inicjalizacji .........................................................................................................................227 Odraczanie inicjalizacji ......................................................................................................................228 Inicjalizacja opóźniona ...............................................................................................................228 Inicjalizacja leniwa ......................................................................................................................229 Dla ciekawskich: Kruczki inicjalizacji .............................................................................................231 Wyzwanie: Zagadka Excalibura .......................................................................................................233 (cid:20)(cid:23)(cid:3) (cid:39)(cid:93)(cid:76)(cid:72)(cid:71)(cid:93)(cid:76)(cid:70)(cid:93)(cid:72)(cid:81)(cid:76)(cid:72)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:21)(cid:22)(cid:24) Definiowanie klasy Room .................................................................................................................235 Tworzenie klas pochodnych .............................................................................................................236 Sprawdzanie typów ............................................................................................................................242 Hierarchia typów w języku Kotlin ...................................................................................................244 Rzutowanie typów .......................................................................................................................245 Inteligentne rzutowanie ..............................................................................................................246 Dla ciekawskich: Klasa Any ..............................................................................................................247 (cid:20)(cid:24)(cid:3) (cid:50)(cid:69)(cid:76)(cid:72)(cid:78)(cid:87)(cid:92)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:21)(cid:23)(cid:28) Słowo kluczowe object .......................................................................................................................249 Deklaracje obiektów ....................................................................................................................250 Wyrażenie obiektowe ..................................................................................................................255 Obiekty uzupełniające ................................................................................................................255 Klasy zagnieżdżone ............................................................................................................................256 Klasy danych .......................................................................................................................................259 Funkcja toString ..........................................................................................................................260 Funkcja equals ..............................................................................................................................261 Funkcja copy ................................................................................................................................261 Deklaracje destrukturyzujące ....................................................................................................261 Klasy wyliczeniowe .............................................................................................................................263 Przeciążanie operatorów ...................................................................................................................264 Eksplorowanie świata NyetHack ......................................................................................................266 Dla ciekawskich: Definiowanie porównań strukturalnych ..........................................................269 Dla ciekawskich: Algebraiczne typy danych ...................................................................................271 Wyzwanie: Polecenie „Wyjdź” .........................................................................................................273 Wyzwanie: Implementacja mapy świata .........................................................................................274 Wyzwanie: Dzwonimy .......................................................................................................................274 (cid:28) Kup książkęPoleć książkę (cid:51)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:90)(cid:3)(cid:77)(cid:219)(cid:93)(cid:92)(cid:78)(cid:88)(cid:3)(cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:17)(cid:3)(cid:55)(cid:75)(cid:72)(cid:3)(cid:37)(cid:76)(cid:74)(cid:3)(cid:49)(cid:72)(cid:85)(cid:71)(cid:3)(cid:53)(cid:68)(cid:81)(cid:70)(cid:75)(cid:3)(cid:42)(cid:88)(cid:76)(cid:71)(cid:72) (cid:20)(cid:25)(cid:3) (cid:44)(cid:81)(cid:87)(cid:72)(cid:85)(cid:73)(cid:72)(cid:77)(cid:86)(cid:92)(cid:3)(cid:76)(cid:3)(cid:78)(cid:79)(cid:68)(cid:86)(cid:92)(cid:3)(cid:68)(cid:69)(cid:86)(cid:87)(cid:85)(cid:68)(cid:78)(cid:70)(cid:92)(cid:77)(cid:81)(cid:72)(cid:3) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:21)(cid:26)(cid:24) Definiowanie interfejsów ..................................................................................................................275 Implementacja interfejsu ...................................................................................................................276 Domyślne implementacje ..................................................................................................................279 Klasy abstrakcyjne ..............................................................................................................................279 Walka w świecie NyetHack ...............................................................................................................282 (cid:20)(cid:26)(cid:3) (cid:55)(cid:92)(cid:83)(cid:92)(cid:3)(cid:86)(cid:83)(cid:68)(cid:85)(cid:68)(cid:80)(cid:72)(cid:87)(cid:85)(cid:92)(cid:93)(cid:82)(cid:90)(cid:68)(cid:81)(cid:72)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:21)(cid:27)(cid:26) Definiowanie typów sparametryzowanych ....................................................................................287 Funkcje sparametryzowane ..............................................................................................................289 Wiele parametrów typów sparametryzowanych ...........................................................................290 Ograniczenia typów sparametryzowanych .....................................................................................291 vararg i get ...........................................................................................................................................293 in i out ..................................................................................................................................................295 Dla ciekawskich: Słowo kluczowe reified ........................................................................................299 (cid:20)(cid:27)(cid:3) (cid:53)(cid:82)(cid:93)(cid:86)(cid:93)(cid:72)(cid:85)(cid:93)(cid:72)(cid:81)(cid:76)(cid:68)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:19)(cid:22) Definiowanie funkcji rozszerzenia ...................................................................................................303 Definiowanie rozszerzenia dla klasy bazowej .........................................................................304 Sparametryzowane funkcje rozszerzeń ...........................................................................................305 Właściwości rozszerzające .................................................................................................................307 Rozszerzenia dla typów akceptujących wartości puste .................................................................308 Funkcje rozszerzeń — za kulisami ...................................................................................................309 Wyodrębnianie kodu do rozszerzeń ................................................................................................310 Definiowanie plików rozszerzeń ......................................................................................................311 Zmiana nazwy rozszerzenia ..............................................................................................................313 Rozszerzenia w standardowej bibliotece Kotlina ...........................................................................314 Dla ciekawskich: Literały funkcyjne z odbiorcami ........................................................................315 Wyzwanie: Funkcja rozszerzenia toDragonSpeak .........................................................................316 Wyzwanie: Funkcja rozszerzenia frame ..........................................................................................316 (cid:20)(cid:28)(cid:3) (cid:51)(cid:82)(cid:71)(cid:86)(cid:87)(cid:68)(cid:90)(cid:92)(cid:3)(cid:83)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:68)(cid:3)(cid:73)(cid:88)(cid:81)(cid:78)(cid:70)(cid:92)(cid:77)(cid:81)(cid:72)(cid:74)(cid:82)(cid:3) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:20)(cid:28) Kategorie funkcji ................................................................................................................................319 Przekształcenia .............................................................................................................................319 Filtry ..............................................................................................................................................321 Złączenia .......................................................................................................................................323 Dlaczego programowanie funkcyjne? .............................................................................................324 Sekwencje .............................................................................................................................................325 Dla ciekawskich: Profilowanie ..........................................................................................................326 Dla ciekawskich: Arrow.kt ................................................................................................................327 Wyzwanie: Odwracanie wartości w mapie .....................................................................................328 Wyzwanie: Zastosowanie programowania funkcyjnego w pliku Tavern.kt ..............................328 Wyzwanie: Ruchome okno ...............................................................................................................329 (cid:21)(cid:19)(cid:3) (cid:58)(cid:86)(cid:83)(cid:181)(cid:260)(cid:71)(cid:93)(cid:76)(cid:68)(cid:260)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:93)(cid:3)(cid:45)(cid:68)(cid:89)(cid:199)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:22)(cid:20) Współdziałanie z klasami Javy .........................................................................................................331 Współdziałanie a stosowanie wartości pustych .............................................................................332 Odwzorowywanie typów ...................................................................................................................335 (cid:20)(cid:19) Kup książkęPoleć książkę (cid:54)(cid:83)(cid:76)(cid:86)(cid:3)(cid:87)(cid:85)(cid:72)(cid:285)(cid:70)(cid:76) Akcesory get, set i współdziałanie ....................................................................................................337 Więcej niż tylko klasy ........................................................................................................................339 Wyjątki a współdziałanie ...................................................................................................................347 Typy funkcyjne w Javie ......................................................................................................................350 (cid:21)(cid:20)(cid:3) (cid:55)(cid:90)(cid:82)(cid:85)(cid:93)(cid:72)(cid:81)(cid:76)(cid:72)(cid:3)(cid:90)(cid:3)(cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:76)(cid:72)(cid:3)(cid:83)(cid:76)(cid:72)(cid:85)(cid:90)(cid:86)(cid:93)(cid:72)(cid:77)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:76)(cid:3)(cid:81)(cid:68)(cid:3)(cid:36)(cid:81)(cid:71)(cid:85)(cid:82)(cid:76)(cid:71)(cid:68)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:24)(cid:22) Android Studio ...................................................................................................................................353 Konfiguracja Gradle ....................................................................................................................356 Organizacja projektu ...................................................................................................................359 Definiowanie interfejsu użytkownika ..............................................................................................359 Uruchamianie aplikacji w emulatorze .............................................................................................362 Generowanie postaci ..........................................................................................................................363 Klasa aktywności ................................................................................................................................365 Podłączanie widoków ........................................................................................................................366 Syntetyczne właściwości rozszerzeń Kotlina dla Androida .........................................................368 Tworzenie obiektu nasłuchującego kliknięć ..................................................................................370 Zapisany stan instancji ......................................................................................................................371 Odczyt zapisanego stanu instancji ............................................................................................374 Refaktoryzacja do postaci rozszerzeń ..............................................................................................374 Dla ciekawskich: Biblioteki Kotlin KTX i Anko ............................................................................377 (cid:21)(cid:21)(cid:3) (cid:58)(cid:83)(cid:85)(cid:82)(cid:90)(cid:68)(cid:71)(cid:93)(cid:72)(cid:81)(cid:76)(cid:72)(cid:3)(cid:71)(cid:82)(cid:3)(cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:3)(cid:38)(cid:82)(cid:85)(cid:82)(cid:88)(cid:87)(cid:76)(cid:81)(cid:72)(cid:86)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:26)(cid:28) Parsowanie danych postaci ...............................................................................................................379 Pobieranie rzeczywistych danych ....................................................................................................381 Główny wątek aplikacji na Androida ..............................................................................................384 Włączanie koprocedur .......................................................................................................................385 Tworzenie koprocedur przy użyciu funkcji async .........................................................................385 Funkcje launch a async i await .........................................................................................................387 Funkcje zawieszające ..........................................................................................................................387 Wyzwanie: Rzeczywiste dane ...........................................................................................................388 Wyzwanie: Minimalna siła ................................................................................................................388 (cid:21)(cid:22)(cid:3) (cid:51)(cid:82)(cid:86)(cid:260)(cid:82)(cid:90)(cid:76)(cid:72)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:27)(cid:28) Co dalej? ...............................................................................................................................................389 Bezwstydna reklama ...........................................................................................................................389 Dziękujemy! ........................................................................................................................................390 (cid:36)(cid:3) (cid:58)(cid:76)(cid:219)(cid:70)(cid:72)(cid:77)(cid:3)(cid:90)(cid:92)(cid:93)(cid:90)(cid:68)(cid:262)(cid:3)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:28)(cid:22) Korzystanie z Exercism ......................................................................................................................393 (cid:54)(cid:78)(cid:82)(cid:85)(cid:82)(cid:90)(cid:76)(cid:71)(cid:93)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:23)(cid:19)(cid:20) (cid:20)(cid:20) Kup książkęPoleć książkę (cid:51)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:90)(cid:3)(cid:77)(cid:219)(cid:93)(cid:92)(cid:78)(cid:88)(cid:3)(cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:17)(cid:3)(cid:55)(cid:75)(cid:72)(cid:3)(cid:37)(cid:76)(cid:74)(cid:3)(cid:49)(cid:72)(cid:85)(cid:71)(cid:3)(cid:53)(cid:68)(cid:81)(cid:70)(cid:75)(cid:3)(cid:42)(cid:88)(cid:76)(cid:71)(cid:72) (cid:20)(cid:21) Kup książkęPoleć książkę (cid:20) (cid:51)(cid:76)(cid:72)(cid:85)(cid:90)(cid:86)(cid:93)(cid:68)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:68) (cid:90) (cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:76)(cid:72) W tym rozdziale Czytelnik napisze swoją pierwszą aplikację w języku Kotlin, używając przy tym IntelliJ IDEA. Przejście tej programistycznej inicjacji pozwoli poznać to środowisko programistyczne, utworzyć nowy projekt programu w języku Kotlin, napisać pierwszy fragment kodu w tym języku oraz przyjrzeć się generowanym przez niego wynikom. Projekt utworzony w tym rozdziale posłuży jako poligon doświadczalny do sprawdzania nowych pojęć prezentowanych w dalszej części książki. (cid:44)(cid:81)(cid:86)(cid:87)(cid:68)(cid:79)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:44)(cid:81)(cid:87)(cid:72)(cid:79)(cid:79)(cid:76)(cid:45)(cid:3)(cid:44)(cid:39)(cid:40)(cid:36) IntelliJ IDEA jest zintegrowanym środowiskiem programistycznym (tak zwanym IDE od ang.: Integrated Development Environment) przeznaczonym do pisania programów w języku Kotlin stworzonym przez firmę JetBrains (która jest także twórcą samego języka Kotlin). W pierwszej kolejności należy zacząć od pobrania IntelliJ IDEA Community Edition z witryny JetBrains: https://www.jetbrains.com/idea/download (patrz rysunek 1.1). (cid:53)(cid:92)(cid:86)(cid:88)(cid:81)(cid:72)(cid:78)(cid:3)(cid:20)(cid:17)(cid:20)(cid:17)(cid:3)(cid:51)(cid:82)(cid:69)(cid:76)(cid:72)(cid:85)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:83)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:88)(cid:3)(cid:76)(cid:81)(cid:86)(cid:87)(cid:68)(cid:79)(cid:68)(cid:70)(cid:92)(cid:77)(cid:81)(cid:72)(cid:74)(cid:82)(cid:3)(cid:44)(cid:81)(cid:87)(cid:72)(cid:79)(cid:79)(cid:76)(cid:45)(cid:3)(cid:44)(cid:39)(cid:40)(cid:36)(cid:3)(cid:38)(cid:82)(cid:80)(cid:80)(cid:88)(cid:81)(cid:76)(cid:87)(cid:92)(cid:3)(cid:40)(cid:71)(cid:76)(cid:87)(cid:76)(cid:82)(cid:81) Kup książkęPoleć książkę (cid:53)(cid:82)(cid:93)(cid:71)(cid:93)(cid:76)(cid:68)(cid:260)(cid:3)(cid:20)(cid:17)(cid:3)(cid:51)(cid:76)(cid:72)(cid:85)(cid:90)(cid:86)(cid:93)(cid:68)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:68)(cid:3)(cid:90)(cid:3)(cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:76)(cid:72) Po pobraniu programu należy postępować zgodnie z instrukcjami dotyczącymi używanej platformy systemowej podanymi na stronie poświęconej instalacji i konfiguracji IDE — https://www.jetbrains.com/help/idea/install-and-set-up-product.html. Środowisko IntelliJ IDEA, które dalej będziemy nazywali IntelliJ, ułatwia pisania odpowiednio sformatowanego kodu w języku Kotlin. Upraszcza także cały proces programistyczny, gdyż udostępnia wbudowane narzędzia do uruchamiania pisanych aplikacji, debugowania ich, sprawdzania oraz refaktoryzacji kodu. Więcej informacji na temat tego, dlaczego do pisania kodu w Kotlinie polecamy właśnie to zintegrowane środowisko programistyczne, można znaleźć pod koniec tego rozdziału w podrozdziale pt. „Dla ciekawskich: Dlaczego warto używać właśnie IntelliJ?”. (cid:51)(cid:76)(cid:72)(cid:85)(cid:90)(cid:86)(cid:93)(cid:92)(cid:3)(cid:83)(cid:85)(cid:82)(cid:77)(cid:72)(cid:78)(cid:87)(cid:3)(cid:83)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:88)(cid:3)(cid:90)(cid:3)(cid:46)(cid:82)(cid:87)(cid:79)(cid:76)(cid:81)(cid:76)(cid:72) Gratulujemy! A zatem Czytelnik dysponuje już językiem Kotlin oraz potężnym zintegrowanym środowiskiem programistycznym do pisania programów w tym języku. Teraz pozostaje już ty
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Programowanie w języku Kotlin. The Big Nerd Ranch Guide
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: