Kotlin è un linguaggio di programmazione moderno che viene compilato in bytecode Java. È gratuito e open source e promette di rendere la codifica per Android ancora più divertente.
Kotlin è al 100% interoperabile con Java. In altre parole, può essere utilizzato insieme a Java nello stesso progetto. Quindi puoi rifattorizzare parti del tuo codice Java su Kotlin e non si romperà. In aggiunta a ciò, è conciso, espressivo e ha un ottimo strumento. Kotlin può essere utilizzato sul back-end (lato server), ma sta ricevendo molta attenzione in questo momento come linguaggio per lo sviluppo di app Android. Kotlin è ora supportato da Google come linguaggio di prima classe per lo sviluppo di Android, quindi la popolarità di Kotlin è destinata a esplodere!
In questo primo tutorial della serie Kotlin From Scratch, imparerai le basi del linguaggio: commenti, variabili, tipi semplici, matrici e inferenza del tipo.
Per seguire insieme a me, avrai bisogno del plugin Kotlin su Android Studio. In alternativa, è possibile utilizzare il parco giochi online o IntelliJ IDEA Community Edition.
In Kotlin, usa val
dichiarare una costante o var
parole chiave per dichiarare una variabile. È possibile specificare un tipo come Stringa
o Int
dopo il nome della variabile. Nell'esempio seguente, abbiamo dichiarato una costante nome di battesimo
di tipo Stringa
con il val
parola chiave.
val firstName: String = "Chike"
Ma presto ti renderai conto che in Kotlin è spesso possibile omettere il tipo dalla dichiarazione e il compilatore non si lamenterà.
val lastName = "Mgbemena" // sarà ancora compilato
Nel codice sopra, noterai che non abbiamo esplicitamente indicato il tipo Stringa
. Il codice sopra funzionerà ancora perché il compilatore ha implicitamente inferito il tipo usando l'inferenza di tipo. Torneremo su questo!
La differenza tra il val
e var
le parole chiave sono che il primo è immutabile o di sola lettura (il suo valore non può essere modificato), mentre il secondo è mutabile (il suo valore può essere modificato).
val dateOfBirth = "29 marzo, 1709" dateOfBirth = "25 dicembre 1600" // non può essere cambiato var car = "Toyota Matrix" car = "Mercedes-Maybach" // può essere cambiato
Si noti che per una variabile dichiarata con var
parola chiave che ha il suo tipo inferito dal compilatore, l'assegnazione di un altro valore di un tipo diverso non funzionerà. In altre parole, il valore della variabile può cambiare, ma il suo tipo non può! Per esempio:
var age = 12 age = "12 years" // Errore: tipo mancata corrispondenza
Si consiglia vivamente di iniziare rendendo le variabili immutabili dichiarandole con val
parola chiave, in modo da non mantenere troppi stati. Ciò rende il tuo codice più sicuro per il multithreading, perché garantisce che le tue variabili non possano essere modificate da altri thread in modo imprevisto.
Un'altra cosa che dovresti sapere sul val
la parola chiave è che puoi dichiararla solo con un tipo e assegnarla un valore più tardi. Ma puoi sempre assegnare un valore solo una volta.
val carName: String carName = "Toyota Matrix" // verrà compilato
In Java, è possibile dichiarare più variabili dello stesso tipo su una singola riga, ma ciò non funziona in Kotlin. In Kotlin, tutte le dichiarazioni delle variabili devono essere sulle loro linee.
val carName = "BMW", streetName = "Oke street" // questo non verrà compilato // questo compilerà var carName = "BMW" var streetName = "Oke street"
Kotlin è un linguaggio fortemente tipizzato che supporta l'inferenza o deduzione di tipo. Questo è il meccanismo impiegato dal compilatore per scoprire i tipi dal contesto. Java non ha un meccanismo di inferenza del tipo, il che significa che devi dichiarare esplicitamente il tipo di ogni funzione o variabile. L'inferenza di tipo aiuta a ridurre il codice di caldaia che devi scrivere.
val country = "Nigeria" // il tipo viene inferito dal codice val del compilatore = 234
Il codice sopra sarebbe compilato anche se non abbiamo specificato esplicitamente il tipo per la variabile country. Il compilatore è abbastanza intelligente da sapere che il paese è di tipo Stringa
, perché il valore, "Nigeria", è una stringa.
In Java, abbiamo due tipi di tipi primitivi di tipo (ad esempio int, long, boolean, byte, char, ecc.) E di riferimento (ad esempio array, Stringa
). Java usa wrapper (come java.lang.Integer
) per far sì che i tipi primitivi si comportino come oggetti. Ma a Kotlin non esiste una tale distinzione. Invece, tutti i tipi sono oggetti.
I tipi interi disponibili in Kotlin sono:
Lungo
-64 bitInt
-32 bitCorto
-16 bitByte
-8 bitI tipi a virgola mobile sono:
Doppio
-64 bitGalleggiante
-32 bitval myInt = 55 val myLong = 40L val myFloat = 34.43F val myDouble = 45.78 val myHexadecimal = 0x0F val myBinary = 0b010101
Puoi osservare che abbiamo creato a Lungo
letterale aggiungendo il suffisso L
, e per Galleggiante
abbiamo aggiunto il suffisso F
o f
. I numeri possono anche essere scritti in notazione esadecimale usando il 0x
o 0X
prefisso e in binario usando il 0b
o 0B
prefisso. Nota che in tutti questi casi, Kotlin può usare l'inferenza di tipo per conoscere invece il tipo che vogliamo.
val myLong = 19L val myLongAgain: Long = 40
Per convertire un numero da un tipo a un altro, è necessario richiamare esplicitamente la funzione di conversione corrispondente. In altre parole, non esiste una conversione implicita tra tipi di numeri.
val myNumber = 400 val myNumberAgain: Long = myNumber // genera errore: tipo mancata corrispondenza
Ogni tipo di numero ha funzioni di supporto che convertono da un tipo di numero a un altro: ToByte ()
, Toint ()
, Tolong ()
, galleggiare()
, raddoppiare()
, Tochar ()
, toShort ()
.
val myInt = 987 val myLong = myInt.toLong ()
Nel codice sopra, stiamo convertendo da un numero intero a un lungo. Possiamo anche fare il contrario usando il metodo Toint ()
sulla variabile lunga. Si noti che questo troncerà il valore per adattarsi alla dimensione più piccola di a Int
digita se necessario, quindi fai attenzione quando converti i tipi più grandi in quelli più piccoli!
Puoi anche convertire a Stringa
in un tipo di numero.
val stringNumber = "101" val intValue = stringNumber.toInt ()
Nel codice sopra, abbiamo convertito la variabile stringnumber
in un Int
digita chiamando il metodo Toint ()
sulla variabile. Possiamo scrivere questo più sinteticamente chiamando invece il metodo direttamente sulla stringa:
val intValue = "101" .toInt ()
Il booleano
digitare in Kotlin è lo stesso di Java. Il suo valore può essere vero o falso. La disgiunzione delle operazioni (||
), congiunzione (&&
) e la negazione (!
) può essere eseguito su tipi booleani, proprio come Java.
val myTrueBoolean = true val myFalseBoolean = false val x = 1 val y = 3 val w = 4 val z = 6 val n = x < z && z > w // n è vero
Le stringhe possono essere create con virgolette doppie o virgolette doppie. Inoltre, i caratteri di escape possono essere usati con virgolette doppie.
val myString = "Questa è una stringa" val escapeString = "Questa è una stringa con nuova riga \ n"
Per creare una stringa che si estende su più righe nel file sorgente, utilizziamo le virgolette triple:
val multipleStringLines = "" "Questa è la prima riga Questa è la seconda riga Questa è la terza riga" ""
Kotlin supporta anche interpolazione di stringhe o modelli di stringhe. Questo è un modo più semplice per creare stringhe dinamiche rispetto alla concatenazione, che è ciò che usiamo in Java. Usando i modelli di stringhe, possiamo inserire variabili ed espressioni in una stringa.
val accountBalance = 200 val bankMessage = "Il saldo del tuo conto è $ accountBalance" // Il saldo del tuo account è 200
Nel codice sopra, abbiamo creato una stringa letterale e al suo interno ci siamo riferiti a una variabile con l'uso di a $
carattere davanti al nome della variabile. Si noti che se la variabile non è corretta o non esiste, il codice non verrà compilato.
Che dire se hai bisogno di usare $
nella tua stringa? Lo sfuggi semplicemente con \ $
! Inoltre, puoi chiamare metodi da una interpolazione Stringa
direttamente; devi aggiungere parentesi graffe $
per avvolgerlo.
val name = "Chike" val message = "La prima lettera a mio nome è $ nome.first ()" // La prima lettera a mio nome è C
Un'altra cosa interessante che puoi fare è eseguire una logica all'interno delle parentesi graffe durante la creazione di un Stringa
letterale.
val age = 40 val anotherMessage = "Sei $ if (age> 60)" old "else" young "" // Sei giovane
In Kotlin, ci sono due modi principali per creare un array: usando la funzione helper arrayOf ()
o il costruttore Array ()
.
arrayOf ()
FunzioneAd esempio, creiamo un array usando alcuni elementi arrayOf ()
.
val myArray = arrayOf (4, 5, 7, 3)
Ora, per accedere a qualsiasi elemento, possiamo usare il suo indice: myArray [2]
. Si noti che possiamo passare in valori di diversi tipi nel arrayOf ()
come argomenti e funzionerà ancora - sarà una matrice di tipo misto.
val myArray = arrayOf (4, 5, 7, 3, "Chike", false)
Per far sì che tutti i valori dell'array abbiano lo stesso tipo, ad es. Int
, dichiariamo un tipo chiamando arrayOf
o intArrayOf ()
.
val myArray3 = arrayOf(4, 5, 7, 3, "Chike", false) // non compilerà val myArray4 = intArrayOf (4, 5, 7, 3, "Chike", false) // non verrà compilato
Abbiamo anche altre funzioni di utilità per creare matrici di altri tipi come charArrayOf ()
, booleanArrayOf ()
, longArrayOf ()
, shortArrayOf ()
, byteArrayOf ()
, e così via. Dietro le quinte, l'uso di queste funzioni creerà una matrice dei loro rispettivi tipi primitivi Java. In altre parole, intArrayOf ()
compilerà il normale tipo primitivo Java int []
, byteArrayOf ()
sarà byte[]
, longArrayOf ()
sarà lungo[]
, e così via.
Array ()
CostruttoreOra vediamo come creare un array con Array ()
. Il costruttore di questa classe richiede una dimensione e una funzione lambda. Impareremo di più sulle funzioni lambda più avanti in questa serie, ma per ora comprendiamo semplicemente che è un modo semplice e in-lineato di dichiarare una funzione anonima. In questo caso, il lavoro della funzione lambda è inizializzare l'array con gli elementi.
val numbersArray = Array (5, i -> i * 2)
Nel codice precedente, abbiamo passato 5 come dimensione dell'array nel primo argomento. Il secondo argomento accetta una funzione lambda, che prende l'indice dell'elemento array e quindi restituisce il valore da inserire in quell'indice dell'array. Quindi nell'esempio sopra, abbiamo creato un array con gli elementi 0, 2, 4, 6 e 8.
Questo è facile. In Kotlin, i commenti sono uguali a quelli di Java. Possiamo utilizzare i commenti di blocco o di linea:
/ * ciao, questo è un commento di blocco con più righe. Questa è un'altra linea. Questo è di nuovo un altro * / // questo è un commento a riga singola
In questo tutorial, hai imparato le basi del linguaggio di programmazione Kotlin: variabili, tipi di base, inferenza di tipo, array e commenti. Nel prossimo tutorial della serie Kotlin From Scratch, imparerai a conoscere loop, intervalli, condizioni, raccolte e pacchetti in Kotlin. A presto!
Per saperne di più sulla lingua di Kotlin, ti consiglio di visitare la documentazione di Kotlin. Oppure guarda alcuni dei nostri altri tutorial di Kotlin qui su Envato Tuts+.