O introducere în Kotlin

Introducere

Încă de când Apple a lansat limba de programare Swift pentru iOS, o mulțime de dezvoltatori Android au dorit o limbă similară pentru dezvoltarea Android. Dacă sunteți unul dintre acei dezvoltatori, veți iubi Kotlin, o limbă JVM care este remarcabil de similar cu Swift.

Kotlin este un limbaj static tipizat, dezvoltat de JetBrains, a cărui sintaxă este mai expresivă și mai concisă decât cea a Java. Cu funcții precum funcții de ordin superior, expresii lambda, supraîncărcarea operatorilor, șabloane de șir și multe altele, Kotlin are mult mai mult de oferit decât Java. Deoarece Java și Kotlin sunt foarte interoperabile, pot fi utilizate împreună în același proiect.

Dacă sunteți un programator competent în Java, veți putea să-l învățați pe Kotlin într-un timp foarte scurt. În acest tutorial vă voi arăta cum să folosiți cele mai frecvent utilizate construcții ale lui Kotlin.

Cerințe preliminare

Pentru a urma împreună cu mine, veți avea nevoie de:

  • o bună înțelegere a Java.
  • cea mai recentă versiune a compilatorului Kotlin. Alternativ, puteți folosi terenul de joacă online.

1. Clase

Pentru a crea o clasă în Kotlin, trebuie să utilizați clasă cuvinte cheie. De exemplu, iată cum creați o clasă goală numită Persoană:

"clasa java Person

Adăugarea de proprietăți

O clasă are de obicei proprietăți și funcții ale membrilor (numite și metode). Să adăugăm două proprietăți la Persoană clasă, Nume de tip Şir și vârstă de tip Int.

Numele java var: String = "" var var: Int = 0

După cum puteți vedea, sintaxa pentru crearea variabilelor este puțin diferită de cea a Java. Pentru a crea o variabilă în Kotlin, trebuie să utilizați var cuvinte cheie. Cu toate acestea, dacă doriți ca variabila dvs. să fie o variabilă numai pentru citire / atribuire o dată, utilizați Val cuvânt cheie în loc.

De dragul siguranței null, Kotlin face, de asemenea, o distincție între variabilele care pot fi nul și variabile care nu pot fi niciodată nul. În exemplul nostru precedent, ambele variabile Nume și vârstă nu poate fi niciodată nul. Dacă sunt nulă, compilatorul va afișa o eroare.

Pentru a crea o variabilă care se poate menține nul, trebuie să adăugați o ? după tipul variabilei. De exemplu:

java var colegiu: String? = nul

Acum că avem o clasă, crearea unui exemplu este ușor:

java var jake = Persoană ()

Nu, Kotlin nu are nou cuvinte cheie. Odată ce instanța a fost creată, puteți accesa proprietățile acesteia în același mod ca și în Java:

java Jake.name = "Jake Hill" jake.age = 24 jake.college = "Colegiul lui Stephen"

Utilizând constructori

Inițializarea proprietăților individuale ale exemplului nostru așa cum am făcut nu este o practică bună de codificare. O modalitate mai bună de a face acest lucru ar fi prin utilizarea unui constructor. Sintaxa Kotlin pentru a crea un astfel de constructor este foarte compactă:

"java de clasă Persoană (var nume: String, var var: Int, var colegiu: String?)

De fapt, dacă nu aveți altceva de adăugat la clasa dvs., nu aveți nevoie de bretele coapse. Următorul cod funcționează foarte bine:

"clasa java Persoană (nume var: String, var age: Int, var colegiu: String?)

var jake = Persoană ("Jake Hill", 24, "Colegiul lui Stephen") "

S-ar putea să vă fie deja evident că nu puteți adăuga cod personalizat acestui constructor. Acest constructor, care face parte din antetul clasei, se numește constructor primar.

Pentru a adăuga mai mulți constructori în clasa dvs., cunoscuți ca constructori secundari, ar trebui să utilizați constructor cuvinte cheie. Constructorii secundari ar trebui să delege constructorului primar folosind acest cuvinte cheie. Să adăugăm un constructor secundar clasei noastre care iniționează valoarea unei proprietăți numită e-mail:

"java de clasă Persoană (var nume: String, var var: Int, var colegiu: String?)

var email: String = "" constructor (nume: String, vârstă: Int, colegiu: String ?, e-mail: String)

Pentru a crea o instanță folosind constructorul secundar, scrieți ceva de genul:

java var jake = Persoană ("Jake Hill", 24, "Colegiul lui Stephen", "[email protected]")

Adăugarea funcțiilor membrilor

În Kotlin, funcțiile sunt create folosind distracţie cuvinte cheie. Să adăugăm o funcție simplă a membrilor numită isEligibleToVote care returnează a boolean valoare:

"java distracție esteEligibleToVote (): Boolean // Dacă vârsta este mai mare sau egală cu 18 // return true

vârsta de returnare> = 18 "

Rețineți că tipul de valoare returnată este indicat la sfârșitul antetului funcției. Puteți apela această metodă la fel ca în Java:

java jake.isEligibleToVote ()

Crearea extensiilor

Kotlin vă permite să extindeți o clasă adăugând funcții suplimentare fără a modifica definiția inițială. Astfel de funcții sunt cunoscute ca extensii. Numele acestor funcții ar trebui să fie precedate de numele claselor pe care le extind.

De exemplu, pentru a adăuga o extensie numită isTeenager la Persoană , scrieți următorul cod în afara clasei:

"java distracție Person.isTeenager (): Boolean

// Dacă vârsta se încadrează în intervalul // 13-19 întoarceți vârsta reală de întoarcere în 13 ... 19 "

Această caracteristică este utilă în special atunci când doriți să extindeți clasele care nu aparțin bazei de cod a proiectului. De exemplu, următorul fragment de cod adaugă o extensie containsSpaces la Şir clasă:

java distracție String.containsSpaces (): Boolean return this.indexOf ("")! = - 1

Crearea de clase derivate

Este important să țineți cont de următoarele în momentul creării unei clase derivate:

  • Trebuie să utilizați a : în loc de Java extinde cuvinte cheie.
  • Antetul clasei de bază trebuie să aibă deschis adnotare.
  • Dacă clasa de bază are un constructor care ia parametri, clasa derivată ar trebui să inițializeze acești parametri în antetul însuși.

Să creăm o clasă numită Angajat care derivă din Persoană:

"java open class Person (numele var: String, Var var: Int, var colegiu: String?) ...

(nume, vârstă, colegiu) nume, vârstă, facultate)

Membrii suprascriptiilor

În Kotlin, trebuie să menționați în mod explicit că o funcție membră poate fi înlocuită prin utilizarea funcției deschis adnotare în antetul metodei din clasa de bază. În clasa derivată, funcțiile deschise pot fi șterse folosind trece peste adnotare.

De exemplu, pentru a suprascrie isEligibleToVote , adăugați următorul fragment de cod la Angajat clasă:

java suprascrie distracție isEligibleToVote (): Boolean // Întoarce întotdeauna întoarcerea adevărată adevărată

Crearea metodelor statice

Kotlin nu vă permite să creați metode statice. Cu toate acestea, vă permite să creați funcții de nivel de pachet care nu aparțin niciunei clase.

principal metoda este probabil cea mai cunoscută metodă statică. Dacă doriți să adăugați principal la un pachet numit com.tutsplus.code.tutorial, atunci codul dvs. ar arăta astfel:

"pachetul java com.tutsplus.code.tutorial

distracție principală (args: Array)

2. Funcții

Ați învățat deja cum să creați funcții simple în exemplele anterioare. Sintaxa pe care ați folosit-o pentru a crea acele funcții a fost foarte asemănătoare cu cea a Java. Cu toate acestea, Kotlin vă permite să faceți mai mult cu funcții.

Crearea funcțiilor de expresie unică

Dacă o funcție returnează valoarea unei singure expresii, atunci puteți folosi = operator după antetul funcției urmat de expresia pentru a defini funcția.

De exemplu, pentru a adăuga o metodă la Persoană clasa care se întoarce Adevărat dacă persoana este un octogenarian, ați scrie:

java distracție isOctogenarian (): Boolean = vârsta în 80 ... 89

După cum puteți vedea, această sintaxă de stenografie este mai compactă și mai ușor de citit.

Funcții de comandă superioare și expresii Lambda

Funcțiile de comandă superioare sunt funcții care pot readuce funcții sau accepta funcții ca parametri. O expresie lambda, pe de altă parte, este doar o funcție care nu are nume. De obicei, expresiile lambda și funcțiile de ordin superior sunt utilizate împreună.

Luați în considerare următorul exemplu care demonstrează sintaxa unei expresii lambda:

java x, y -> x + y

Aceasta este o expresie lambda simplă, care are doi parametri, X și y, și returnează suma lor. După cum probabil ați ghicit, parametrii funcției sunt enumerați înainte de -> operator și corpul funcției începe după -> operator. Această expresie lambda poate fi atribuită unei variabile și folosită după cum urmează:

java val sumLambda: (Int, Int) -> Int = x, y -> x + y val actualSum = sumaLambda (3,4)

Rețineți că tipul variabilei care deține expresia lambda specifică tipurile de parametri și valoarea returnată.

Crearea unei funcții de ordin superior care poate accepta expresia lambda de mai sus ca parametru este la fel de ușoară. De exemplu, pentru a crea o funcție care dublează rezultatul expresiei lambda, ați scrie:

(int, int: int): Int return x

Puteți apela această funcție după cum urmează:

java val rezultat1 = doubleTheResult (3, 4, sumLambda)

Alternativ, puteți trece expresia lambda direct la funcția de ordin superior:

rezultatul java val2 = dublulResult (3, 4, x, y -> x + y)

Expresiile Lambda sunt adesea folosite cu matrice. De exemplu, luați în considerare următoarea matrice de Int valori:

Numerele valurilor java: Array = arrayOf (1, 2, 3, 4, 5)

Dacă doriți să păstrați valoarea fiecărui element în matrice, puteți utiliza Hartă funcția împreună cu o expresie lambda după cum urmează:

"java val squaredNumbers = numere numere (x -> x * x)

// Rezultatul va fi o matrice nouă care conține // 1, 4, 9, 16, 25 "

3. Domenii

Intervalele de expresie sunt folosite foarte frecvent în Kotlin. Le-ați folosit deja în crearea acestora isTeenager și isOctogenarian metode.

Pentru a crea o gamă, tot ce aveți nevoie este ... operator.

"java val r1 = 1 ... 5

// Această gamă conține numărul 1, 2, 3, 4, 5 "

Pentru a crea o gamă în ordine descrescătoare, utilizați downto funcția.

"java val r2 = 5 în jos până la 1

// Această gamă conține numărul 5, 4, 3, 2, 1 "

Dacă nu vrei să fie pasul ăsta 1, puteți specifica o valoare personalizată utilizând Etapa funcţie.

"java val r3 = 5 în jos până la 1 pas 2

// Această gamă conține numărul 5, 3, 1 "

În acest tutorial veți vedea mai multe expresii de interval.

4. Construcții condiționate

dacă

În Kotlin, dacă este o expresie care returnează valori diferite în funcție de faptul dacă condiția a fost îndeplinită. Următorul exemplu ilustrează modul în care funcționează acest lucru.

"java var age = 20 val isEligibleToVote = dacă (vârsta> 18 ani)" Da "altceva" Nu "

// isEligibleToVote va fi acum setat la "Da" "

cand

cand expresia este echivalentă cu cea a lui Java intrerupator. Cu toate acestea, este mult mai versatil. De exemplu, luați în considerare următorul exemplu.

"Valoarea java = 17

val typeOfPerson = când (vârstă) 0 -> "New born" în 1 ... 12 -> "Child" în 13 ... 19 -> "Adolescent" alt = "Adult"

// typeOfPerson va fi acum setat la "Teenager" "

După cum puteți vedea, cand nu poate lua numai valori unice, ci și expresii ca și condițiile sale.

5. Construcții cu buclă

pentru ... in

În Kotlin, puteți folosi pentru ... in buclă pentru a buclă prin rețele, colecții și orice altceva care oferă un iterator. Sintaxa sa este aproape identică cu cea a Java, cu excepția utilizării în operator în loc de Java : operator. Următorul exemplu vă arată cum să faceți o buclă printr-o matrice de Şir obiecte.

"numele java val = arrayOf (" Jake "," Jill "," Ashley "," Bill ")

pentru (nume în nume) println (nume) "

Cu ajutorul expresiilor de rază, puteți face această bucla să se comporte ca un stil tradițional, în stil C, pentru buclă.

"java pentru (i în 0 ... 9) println (i)

// Se comportă exact ca // pentru (int i = 0; i<10;i++)"

in timp ce și face în timp ce

Sintaxa lui in timp ce și face în timp ce buclele din Kotlin sunt identice cu sintaxa folosită în Java. De exemplu, următorul cod Kotlin buclează peste o serie de Şir obiecte folosind a in timp ce buclă:

"java val names = arrayOf (" Jake "," Jill "," Ashley "," Bill ") var i = names.size

în timp ce (i> 0) println (nume [-i]) "

Șabloane de șir

Kotlin vă permite să încorporați variabile și expresii în șiruri de caractere prin împachetarea acestora într-o pereche de bretele curbate, prefixate de un $ simbol. De exemplu:

"java val name =" Bob "println (" Numele meu este $ name ") // Prints" Numele meu este Bob "

val a = 10 val b = 20 println ("Suma este $ a + b") // Imprimă "Suma este de 30"

Concluzie

În acest tutorial, ați învățat elementele de bază ale limbajului de programare Kotlin. Deși am acoperit mai multe construcții aici, Kotlin are multe de oferit. De fapt, începând cu iunie 2015, Kotlin este încă disponibil doar ca previzualizare. Este posibil să vedeți câteva îmbunătățiri și noi caracteristici în lunile următoare.

Dacă doriți să aflați cum să utilizați Kotlin în Android Studio, atunci aruncați o privire la Cum să utilizați Kotlin în proiectele Android. Pentru a afla mai multe despre limba Kotlin, vă recomand să vizitați documentația Kotlin.

Cod