Kotlin is een moderne programmeertaal die compileert met Java bytecode. Het is gratis en open source en belooft om het coderen voor Android nog leuker te maken.
Kotlin is 100% interoperabel met Java. Met andere woorden, het kan samen met Java in hetzelfde project worden gebruikt. U kunt dus delen van uw Java-code refactiveren naar Kotlin en deze zal niet breken. Daarnaast is het beknopt, expressief en heeft het geweldige gereedschappen. Kotlin kan worden gebruikt op de back-end (server-kant), maar het krijgt nu veel aandacht als een taal voor Android app-ontwikkeling. Kotlin wordt nu door Google ondersteund als een eersteklas taal voor Android-ontwikkeling, dus de populariteit van Kotlin zal exploderen!
In deze eerste zelfstudie in de Kotlin From Scratch-serie leert u meer over de basisbeginselen van de taal: opmerkingen, variabelen, eenvoudige typen, arrays en verwijzingen van het type.
Om me te volgen, hebt u de Kotlin-plug-in Android Studio nodig. U kunt ook de online speeltuin of IntelliJ IDEA Community-editie gebruiken.
Gebruik in Kotlin val
om een constante of te declareren var
sleutelwoorden om een variabele te declareren. U kunt een type opgeven zoals Draad
of Int
na de naam van de variabele. In het onderstaande voorbeeld hebben we een constante verklaard Voornaam
van type Draad
met de val
trefwoord.
val firstName: String = "Chike"
Maar je zult snel merken dat het in Kotlin vaak mogelijk is om het type uit de verklaring weg te laten en de compiler niet zal klagen.
val lastName = "Mgbemena" // zal nog steeds compileren
In de bovenstaande code merk je dat we het type niet expliciet hebben vermeld Draad
. De bovenstaande code werkt nog steeds omdat de compiler het type impliciet heeft afgeleid met behulp van het type gevolgtrekking. We komen hierop terug!
Het verschil tussen de val
en var
sleutelwoorden is dat de eerste is onveranderlijk of alleen-lezen (de waarde kan niet worden gewijzigd), terwijl de laatste muteerbaar is (de waarde kan worden gewijzigd).
val dateOfBirth = "29 maart, 1709" dateOfBirth = "25 december, 1600" // kan niet worden gewijzigd var car = "Toyota Matrix" car = "Mercedes-Maybach" // kan worden gewijzigd
Merk op dat voor een variabele verklaard met de var
sleutelwoord waarvan het type is afgeleid door de compiler, het toewijzen van een andere waarde van een ander type zal niet werken. Met andere woorden, de waarde van de variabele kan veranderen, maar het type kan dat niet! Bijvoorbeeld:
var leeftijd = 12 leeftijd = "12 jaar oud" // Fout: type komt niet overeen
Het wordt sterk aanbevolen om te beginnen met het onveranderbaar maken van uw variabelen door ze te verklaren met de val
zoekwoord, om niet te veel staten te behouden. Dit maakt uw code veiliger voor multithreading, omdat deze ervoor zorgt dat uw variabelen niet onverwacht door andere threads kunnen worden gewijzigd.
Nog iets dat u moet weten over de val
trefwoord is dat u het alleen met een type kunt declareren en er later een waarde aan kunt toewijzen. Maar je kunt nog steeds maar één keer een waarde toewijzen.
val carName: String carName = "Toyota Matrix" // wordt gecompileerd
In Java is het mogelijk om meerdere variabelen van hetzelfde type op één regel te declareren, maar dit werkt niet in Kotlin. In Kotlin moeten alle variabele aangiften op hun eigen lijnen zijn.
val carName = "BMW", streetName = "Oke street" // dit compileert niet // dit compileert var carName = "BMW" var streetName = "Oke street"
Kotlin is een sterk getypte taal die het afleiden van woorden of deductie ondersteunt. Dit is het mechanisme dat door de compiler wordt gebruikt om typen uit de context te achterhalen. Java heeft geen type gevolgtrekkingsmechanisme, wat betekent dat je expliciet het type van elke functie of variabele moet aangeven. Type gevolgtrekking helpt bij het verminderen van de standaardcode die je moet schrijven.
val country = "Nigeria" // type wordt afgeleid door compilervalcode = 234
De bovenstaande code zou worden gecompileerd, hoewel we niet expliciet het type voor het variabele land hebben opgegeven. De compiler is slim genoeg om te weten dat het land van het type is Draad
, omdat de waarde, "Nigeria", een tekenreeks is.
In Java hebben we twee typen type-primitieve (bijvoorbeeld int, long, boolean, byte, char, etc.) en referentietypen (bijvoorbeeld array, Draad
). Java gebruikt wrappers (zoals java.lang.Integer
) om ervoor te zorgen dat primitieve typen zich als objecten gedragen. Maar in Kotlin bestaat zo'n onderscheid niet. In plaats daarvan zijn alle typen objecten.
De integer-typen die beschikbaar zijn in Kotlin zijn:
Lang
-64 bitInt
-32 bitkort
-16 bitByte
-8 bitDe typen met drijvende komma zijn:
Dubbele
-64 bitVlotter
-32 bitval myInt = 55 val myLong = 40L val myFloat = 34.43F val myDouble = 45.78 val myHexadecimal = 0x0F val myBinary = 0b010101
Je kunt zien dat we een gemaakt hebben Lang
letterlijk door het achtervoegsel toe te voegen L
, en voor Vlotter
we hebben het achtervoegsel toegevoegd F
of f
. Getallen kunnen ook in hexadecimale notatie worden geschreven met behulp van de 0x
of 0X
voorvoegsel en in binair gebruik van de 0b
of 0B
voorvoegsel. Merk op dat Kotlin in al deze gevallen inferentie kan gebruiken om het type te kennen dat we willen.
val myLong = 19L val myLongAgain: Long = 40
Als u een getal van het ene type naar het andere wilt converteren, moet u expliciet de bijbehorende conversiefunctie gebruiken. Met andere woorden, er is geen impliciete conversie tussen typen getallen.
val myNumber = 400 val myNumberAgain: Long = myNumber // throws Fout: Type komt niet overeen
Elk nummertype heeft helperfuncties die van het ene getaltype naar het andere worden geconverteerd: toByte ()
, toInt ()
, te lang()
, drijven()
, dubbelen()
, Tochar ()
, te kort()
.
val myInt = 987 val myLong = myInt.toLong ()
In de bovenstaande code converteren we van een geheel getal naar een lang getal. We kunnen ook het omgekeerde doen door de methode te gebruiken toInt ()
op de lange variabele. Merk op dat dit de waarde zal inkorten om in de kleinere afmeting van een te passen Int
typ indien nodig - dus wees voorzichtig bij het converteren van grotere naar kleinere!
Je kunt ook een Draad
naar een nummertype.
val stringNumber = "101" val intValue = stringNumber.toInt ()
In de bovenstaande code hebben we de variabele geconverteerd stringNumber
in een Int
typ door de methode te gebruiken toInt ()
op de variabele. We kunnen dit beknopter schrijven door de methode direct op de string te plaatsen:
val intValue = "101" .toInt ()
De Boolean
type in Kotlin is hetzelfde als in Java. De waarde kan zowel waar als onwaar zijn. De operatieafspraak (||
), conjunctie (&&
) en negatie (!
) kan worden uitgevoerd op booleaanse typen, net als 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 is waar
Strings kunnen worden gemaakt met dubbele aanhalingstekens of drievoudige aanhalingstekens. Daarnaast kunnen escape-tekens worden gebruikt met dubbele aanhalingstekens.
val myString = "Dit is een string" val escapeString = "Dit is een string met een nieuwe regel \ n"
Om een string te maken die meerdere regels in het bronbestand omvat, gebruiken we driekwartcitaten:
val multipleStringLines = "" "Dit is de eerste regel Dit is de tweede regel Dit is de derde regel" ""
Kotlin ondersteunt ook stringinterpolatie of string-sjablonen. Dit is een eenvoudigere manier om dynamische tekenreeksen te maken dan aaneenschakeling, wat we in Java gebruiken. Met behulp van string-sjablonen kunnen we variabelen en expressies in een string invoegen.
val accountBalance = 200 val bankMessage = "Uw rekeningsaldo is $ accountBalance" // Uw saldo is 200
In de bovenstaande code hebben we een letterlijke string gemaakt en daarbinnen verwezen we naar een variabele door het gebruik van een $
teken voor de naam van de variabele. Merk op dat als de variabele niet correct is of niet bestaat, de code niet zal compileren.
Hoe zit het als je moet gebruiken $
in je string? Je ontsnapt er gewoon mee \ $
! U kunt ook methoden van een geïnterpoleerde aanroep gebruiken Draad
direct; je moet accolades toevoegen $
om het te verpakken.
val name = "Chike" val message = "De eerste letter in mijn naam is $ name.first ()" // De eerste letter op mijn naam is C
Een ander cool ding dat je kunt doen is om wat logica in de accolades uit te voeren bij het maken van een Draad
letterlijk.
val age = 40 val anotherMessage = "U bent $ if (leeftijd> 60)" oud "anders" jong "" // U bent jong
In Kotlin zijn er twee manieren om een array te maken: met behulp van de helperfunctie arrayOf ()
of de constructor Array ()
.
arrayOf ()
FunctieLaten we bijvoorbeeld een array maken waarbij sommige elementen worden gebruikt arrayOf ()
.
val myArray = arrayOf (4, 5, 7, 3)
Om toegang te krijgen tot een element, kunnen we de index gebruiken: myArray [2]
. Merk op dat we waarden van verschillende typen kunnen doorgeven in de arrayOf ()
als argumenten en het zal nog steeds werken - het zal een serie van gemengd type zijn.
val myArray = arrayOf (4, 5, 7, 3, "Chike", false)
Om te zorgen dat alle arraywaarden van hetzelfde type zijn, bijvoorbeeld. Int
, we verklaren een type door te bellen arrayOf
of intArrayOf ()
.
val myArray3 = arrayOf(4, 5, 7, 3, "Chike", false) // compileert val myArray4 = intArrayOf (4, 5, 7, 3, "Chike", false) // zal niet compileren
We hebben ook andere hulpprogramma-functies om arrays van andere typen te maken, zoals charArrayOf ()
, booleanArrayOf ()
, longArrayOf ()
, shortArrayOf ()
, byteArrayOf ()
, enzovoorts. Achter de schermen zal het gebruik van deze functies een reeks van hun respectieve Java-primitieve typen creëren. Met andere woorden, intArrayOf ()
zal compileren naar het normale Java-primitieve type int []
, byteArrayOf ()
zal zijn byte[]
, longArrayOf ()
zal zijn lang[]
, enzovoorts.
Array ()
bouwerLaten we nu kijken hoe we een array kunnen maken met Array ()
. De constructor van deze klasse vereist een grootte en een lambda-functie. We zullen later in deze serie meer leren over lambda-functies, maar voor nu begrijpen we gewoon dat het een eenvoudige, inline manier is om een anonieme functie te verklaren. In dit geval is het de taak van de lambda-functie om de array met elementen te initialiseren.
val numbersArray = Array (5, i -> i * 2)
In de bovenstaande code hebben we 5 doorgegeven als de grootte van de array in het eerste argument. Het tweede argument neemt een lambda-functie op, die de index van het array-element neemt en vervolgens de waarde retourneert die bij die index in de array moet worden ingevoegd. Dus in het bovenstaande voorbeeld hebben we een array gemaakt met de elementen 0, 2, 4, 6 en 8.
Dit is een gemakkelijke. In Kotlin zijn de reacties net hetzelfde als in Java. We kunnen blok- of regelcommentaar gebruiken:
/ * hallo, dit is een blokcommentaar met meerdere regels. Dit is een andere regel. Dit is weer een andere * / // dit is een enkele regelcommentaar
In deze zelfstudie leer je de basis van de Kotlin-programmeertaal: variabelen, basistypen, type gevolgtrekking, arrays en opmerkingen. In de volgende zelfstudie in de Kotlin From Scratch-serie leert u over loops, bereiken, voorwaarden, collecties en pakketten in Kotlin. Tot ziens!
Voor meer informatie over de Kotlin-taal, raad ik aan de Kotlin-documentatie te bezoeken. Of bekijk enkele van onze andere Kotlin-tutorials hier op Envato Tuts+.