Î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.
Pentru a urma împreună cu mine, veți avea nevoie de:
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
“
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"
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]")
Î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 ()
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
Este important să țineți cont de următoarele în momentul creării unei clase derivate:
:
în loc de Java extinde
cuvinte cheie.deschis
adnotare.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)
“
Î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ă
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
“
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.
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ț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
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 "
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.
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.
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]) "
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"
Î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.