Kotlin From Scratch variabili, tipi di base e matrici

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. 

Prerequisiti

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. 

1. Variabili

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"

2. Digitare inferenza o deduzione

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.  

3. Tipi di base

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. 

Numeri

I tipi interi disponibili in Kotlin sono:

  • Lungo-64 bit
  • Int-32 bit
  • Corto-16 bit
  • Byte-8 bit

I tipi a virgola mobile sono: 

  • Doppio-64 bit
  • Galleggiante-32 bit
val 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 tipo booleano

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

stringhe

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

Array

In Kotlin, ci sono due modi principali per creare un array: usando la funzione helper arrayOf () o il costruttore Array ()

Il arrayOf () Funzione

Ad 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. 

Il Array () Costruttore

Ora 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.

4. Commenti

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

Conclusione

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+.