Da quando Apple ha rilasciato il linguaggio di programmazione Swift per iOS, molti sviluppatori Android hanno voluto una lingua simile per lo sviluppo Android. Se sei uno di quegli sviluppatori, amerai Kotlin, una lingua JVM che è molto simile a Swift.
Kotlin è un linguaggio tipizzato staticamente, sviluppato da JetBrains, la cui sintassi è più espressiva e concisa di quella di Java. Con funzioni come funzioni di ordine superiore, espressioni lambda, overloading dell'operatore, modelli di stringhe e molto altro, Kotlin ha molto più da offrire rispetto a Java. Poiché Java e Kotlin sono altamente interoperabili, possono essere utilizzati insieme nello stesso progetto.
Se sei un programmatore competente in Java, sarai in grado di imparare Kotlin in pochissimo tempo. In questo tutorial ti mostrerò come usare i costrutti più usati di Kotlin.
Per seguire insieme a me, avrai bisogno di:
Per creare una classe in Kotlin, devi usare il classe
parola chiave. Ad esempio, ecco come si crea una classe vuota chiamata Persona:
"java class Person
"
Di solito una classe ha proprietà e funzioni membro (chiamate anche metodi). Aggiungiamo due proprietà al Persona
classe, nome di tipo Stringa
e età di tipo Int
.
java var name: String = "" var age: Int = 0
Come puoi vedere, la sintassi per la creazione delle variabili è leggermente diversa da quella di Java. Per creare una variabile in Kotlin, devi usare il var
parola chiave. Tuttavia, se si desidera che la variabile sia una variabile di sola lettura / assegnazione una sola volta, utilizzare il comando val
parola chiave.
Per motivi di sicurezza nulla, Kotlin fa anche una distinzione tra le variabili che possono essere nullo
e variabili che non potranno mai essere nullo
. Nel nostro esempio precedente, entrambe le variabili nome
e età
non può mai essere nullo
. Se sono nulli, il compilatore genera un errore.
Per creare una variabile che può contenere nullo
, è necessario aggiungere un ?
dopo il tipo di variabile. Per esempio:
java var college: String? = null
Ora che abbiamo una classe, la creazione di un'istanza è semplice:
java var jake = Persona ()
No, Kotlin non ha il nuovo
parola chiave. Una volta che l'istanza è stata creata, puoi accedere alle sue proprietà nello stesso modo in cui faresti in Java:
java jake.name = "Jake Hill" jake.age = 24 jake.college = "Stephen's College"
Inizializzare le singole proprietà della nostra istanza nel modo in cui abbiamo appena fatto non è una buona pratica di codifica. Un modo migliore per farlo sarebbe utilizzando un costruttore. La sintassi di Kotlin per creare un tale costruttore è molto compatta:
"java class Person (nome var: String, var age: Int, var college: String?)
"
In effetti, se non hai nient'altro da aggiungere alla tua classe, non hai bisogno delle parentesi graffe. Il seguente codice funziona bene:
"java class Person (nome var: String, var age: Int, var college: String?)
var jake = Persona ("Jake Hill", 24, "Stephen's College") "
Potrebbe già essere ovvio per te che non è possibile aggiungere codice personalizzato a questo costruttore. Questo costruttore, che fa parte dell'intestazione della classe, è chiamato il costruttore principale.
Per aggiungere altri costruttori alla tua classe, noti come costruttori secondari, dovresti usare il costruttore
parola chiave. I costruttori secondari dovrebbero delegare al costruttore principale usando il Questo
parola chiave. Aggiungiamo un costruttore secondario alla nostra classe che inizializza il valore di una proprietà chiamata e-mail:
"java class Person (nome var: String, var age: Int, var college: String?)
var email: String = "" costruttore (nome: String, età: Int, college: String ?, email: String): questo (nome, età, college) this.email = email "
Per creare un'istanza usando il costruttore secondario, scrivi qualcosa come questo:
java var jake = Persona ("Jake Hill", 24, "Stephen's College", "[email protected]")
In Kotlin, le funzioni vengono create usando il divertimento
parola chiave. Aggiungiamo una semplice funzione membro chiamata isEligibleToVote che restituisce a booleano
valore:
"java fun isEligibleToVote (): Boolean // Se l'età è maggiore o uguale a 18 // return true
età di ritorno> = 18 "
Si noti che il tipo del valore restituito è indicato alla fine dell'intestazione della funzione. Puoi chiamare questo metodo nello stesso modo in cui faresti in Java:
java jake.isEligibleToVote ()
Kotlin ti consente di estendere una classe aggiungendo funzioni aggiuntive senza modificare la sua definizione originale. Tali funzioni sono note come estensioni. I nomi di queste funzioni dovrebbero essere preceduti dai nomi delle classi che estendono.
Ad esempio, per aggiungere un'estensione chiamata isTeenager al Persona
classe, scrivi il seguente codice al di fuori della classe:
"java fun Person.isTeenager (): Boolean
// Se l'età rientra nell'intervallo // 13-19 restituisce l'età effettiva di ritorno in 13 ... 19 "
Questa funzione è particolarmente utile quando si desidera estendere classi che non appartengono alla base di codice del progetto. Ad esempio, il seguente snippet di codice aggiunge un'estensione containsSpaces al Stringa
classe:
java fun String.containsSpaces (): Boolean return this.indexOf ("")! = - 1
È importante tenere a mente quanto segue quando si crea una classe derivata:
:
invece di Java si estende
parola chiave.Aperto
annotazione.Creiamo una classe di nome Dipendente da cui deriva Persona
:
"java open class Person (nome var: String, var age: Int, var college: String?) ...
class Employee (nome: String, age: Int, college: String ?, var company: String): Person (nome, età, college)
"
In Kotlin, devi dichiarare esplicitamente che una funzione membro può essere sovrascritta usando il Aperto
annotazione nell'intestazione del metodo nella classe base. Nella classe derivata, le funzioni di apertura possono essere sovrascritte usando il oltrepassare
annotazione.
Ad esempio, per ignorare il isEligibleToVote
metodo, si aggiunge il seguente snippet di codice al Dipendente
classe:
java override fun isEligibleToVote (): Boolean // Restituisce sempre true return true
Kotlin non ti consente di creare metodi statici. Tuttavia, ti consente di creare funzioni a livello di pacchetto che non appartengono a nessuna classe.
Il principale
il metodo è forse il metodo statico più conosciuto. Se vuoi aggiungere il principale
metodo per un pacchetto chiamato com.tutsplus.code.tutorial, allora il tuo codice sarà simile a questo:
"pacchetto java com.tutsplus.code.tutorial
fun main (args: Array
"
Hai già imparato a creare semplici funzioni negli esempi precedenti. La sintassi che hai usato per creare quelle funzioni era molto simile a quella di Java. Kotlin, tuttavia, ti consente di fare molto di più con le funzioni.
Se una funzione restituisce il valore di una singola espressione, allora puoi usare il comando =
operatore dopo l'intestazione della funzione seguito dall'espressione per definire la funzione.
Ad esempio, per aggiungere un metodo al Persona
classe che ritorna vero
se la persona è un ottuagenario, scriveresti:
java fun isOctogenarian (): Boolean = age in 80 ... 89
Come puoi vedere, questa sintassi abbreviata è più compatta e leggibile.
Le funzioni di ordine superiore sono funzioni che possono restituire funzioni o accettare funzioni come parametri. Un'espressione lambda, d'altra parte, è solo una funzione che non ha nome. Di solito, le espressioni lambda e le funzioni di ordine superiore vengono utilizzate insieme.
Considera il seguente esempio che dimostra la sintassi di un'espressione lambda:
java x, y -> x + y
Questa è un'espressione lambda semplice che prende due parametri, X
e y
, e restituisce la loro somma. Come avrai intuito, i parametri della funzione sono elencati prima del ->
l'operatore e il corpo della funzione iniziano dopo il ->
operatore. Questa espressione lambda può essere assegnata a una variabile e utilizzata come segue:
java val sumLambda: (Int, Int) -> Int = x, y -> x + y val actualSum = sumLambda (3,4)
Si noti che il tipo della variabile che contiene l'espressione lambda specifica i tipi dei suoi parametri e il suo valore di ritorno.
Creare una funzione di ordine superiore in grado di accettare l'espressione lambda di cui sopra come parametro è altrettanto facile. Ad esempio, per creare una funzione che raddoppia il risultato dell'espressione lambda, scrivi:
java fun doubleTheResult (x: Int, y: Int, f: (Int, Int) -> Int): Int return f (x, y) * 2
Puoi chiamare questa funzione come segue:
java val result1 = doubleTheResult (3, 4, sumLambda)
In alternativa, puoi passare l'espressione lambda direttamente alla funzione di ordine superiore:
java val result2 = doubleTheResult (3, 4, x, y -> x + y)
Le espressioni lambda sono spesso utilizzate con array. Ad esempio, si consideri il seguente array di Int
valori:
numeri java val: matrice
Se si desidera quadrare il valore di ciascun elemento nell'array, è possibile utilizzare il carta geografica
funzione con un'espressione lambda come segue:
"java val squaredNumbers = numbers.map (x -> x * x)
// Il risultato sarà un nuovo array che contiene // 1, 4, 9, 16, 25 "
Le espressioni Range sono usate molto frequentemente in Kotlin. Li hai già usati durante la creazione del isTeenager
e isOctogenarian
metodi.
Per creare un intervallo, tutto ciò di cui hai bisogno è il ...
operatore.
"java val r1 = 1 ... 5
// Questo intervallo contiene il numero 1, 2, 3, 4, 5 "
Per creare un intervallo in ordine decrescente, utilizzare il giù verso
funzione invece.
"java val r2 = 5 downTo 1
// Questo intervallo contiene il numero 5, 4, 3, 2, 1 "
Se non vuoi che il passo sia 1, puoi specificare un valore personalizzato usando il passo
funzione.
"java val r3 = 5 downTo 1 step 2
// Questo intervallo contiene il numero 5, 3, 1 "
Vedrai più espressioni di intervallo più avanti in questo tutorial.
Se
In Kotlin, Se
è un'espressione che restituisce valori diversi a seconda che la condizione sia stata soddisfatta. Il seguente esempio illustra come funziona.
"java var age = 20 val isEligibleToVote = if (age> 18)" Yes "else" No "
// isEligibleToVote sarà ora impostato su "Sì" "
quando
Il quando
espressione è equivalente a Java interruttore
. Tuttavia, è molto più versatile. Ad esempio, considera il seguente esempio.
"java val età = 17
val typeOfPerson = when (age) 0 -> "New born" in 1 ... 12 -> "Child" in 13 ... 19 -> "Teenager" altro -> "Adulto"
// typeOfPerson sarà ora impostato su "Teenager" "
Come potete vedere, quando
non può prendere solo valori singoli ma anche espressioni come condizioni.
per ... in
In Kotlin puoi usare il per ... in
loop per scorrere in loop array, raccolte e qualsiasi altra cosa che fornisce un iteratore. La sua sintassi è quasi identica a quella di Java, tranne che per l'uso di nel
operatore invece di Java :
operatore. L'esempio seguente mostra come eseguire il ciclo di un array di Stringa
oggetti.
"java val names = arrayOf (" Jake "," Jill "," Ashley "," Bill ")
for (nome in nomi) println (nome) "
Con l'aiuto delle espressioni di intervallo, puoi fare in modo che questo ciclo si comporti come uno stile C tradizionale, per
ciclo continuo.
"java for (i in 0 ... 9) println (i)
// si comporta esattamente come // per (int i = 0; i<10;i++)"
mentre
e fare mentre
La sintassi di mentre
e fare mentre
i loop in Kotlin sono identici alla sintassi utilizzata in Java. Ad esempio, il seguente codice Kotlin scorre su un array di Stringa
oggetti che usano a mentre
ciclo continuo:
"java val names = arrayOf (" Jake "," Jill "," Ashley "," Bill ") var i = names.size ()
while (i> 0) println (names [-i]) "
Kotlin ti permette di incorporare variabili ed espressioni in stringhe avvolgendole in un paio di parentesi graffe, precedute da un $
simbolo. Per esempio:
"java val name =" Bob "println (" Il mio nome è $ nome ") // Stampa" Il mio nome è Bob "
val a = 10 val b = 20 println ("La somma è $ a + b") // Stampa "La somma è 30" "
In questo tutorial, hai imparato le basi del linguaggio di programmazione Kotlin. Anche se abbiamo coperto diversi costrutti qui, Kotlin ha molto altro da offrire. Infatti, a partire da giugno 2015, Kotlin è ancora disponibile solo come anteprima. È probabile che vedremo diversi miglioramenti e nuove funzionalità nei prossimi mesi.
Se vuoi sapere come usare Kotlin in Android Studio, dai un'occhiata a Come usare Kotlin nei tuoi progetti Android. Per saperne di più sulla lingua di Kotlin, ti consiglio di visitare la documentazione di Kotlin.