An Introduksjon til Kotlin
22
Del
10
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert å bare $ 3. Ikke gå glipp av.
Innledning
Helt siden Apple lanserte Swift programmeringsspråk for iOS, mange Android-utviklere har ønsket en lignende språk for Android utvikling. Hvis du er en av de utviklere, du kommer til å elske Kotlin, en JVM språk som er bemerkelsesverdig lik Swift.
Kotlin er en statisk skrevet språk, utviklet av JetBrains, som syntaks er mer uttrykksfulle og konsis enn for Java. Med funksjoner som ordnede funksjoner, lambda uttrykk, operatør overbelastning, streng maler og mer, har Kotlin mye mer å tilby enn Java. Fordi Java og Kotlin er svært samspilte, kan de brukes sammen i det samme prosjektet.
Hvis du er en kompetent programmerer i Java, vil du være i stand til å lære Kotlin i en svært kort tid. I denne opplæringen vil jeg skal vise deg hvordan du bruker Kotlin mest brukte konstruerer
Forutsetninger
For å følge med meg, trenger du:.
den nyeste versjonen av Kotlin kompilatoren. Alternativt kan du bruke den elektroniske lekeplass.
1. Klasser
For å opprette en klasse i Kotlin, må du bruke klassen nøkkelordet. For eksempel, her er hvordan du oppretter en tom klasse kalt Person:
class Person {}
Legge Properties
En klasse har vanligvis egenskaper og medlemsfunksjoner (også kalt metoder). La oss legge to eiendommer til Person-klassen, navn av type String og alder av type Int
Var navn. String = "" var alder: Int = 0
Som du kan se, er litt syntaksen for å skape variabler forskjellig fra den i Java. For å opprette en variabel i Kotlin, må du bruke VAR søkeord. Men hvis du vil at variabelen for å være en skrivebeskyttet /tildele-once variabel, bruker val søkeord i stedet.
For å få til null sikkerhet, gjør Kotlin også et skille mellom variabler som kan være null, og variabler som kan aldri bli null. I vår forrige eksempel kan både variabler navn og alder aldri bli null. Hvis de er null, vil kompilatoren heve en feil.
Hvis du vil opprette en variabel som kan holde null, må du legge til en? etter variabelen type. For eksempel:
Var college: String? = Null
Nå som vi har en klasse, og skaper en forekomst av det er enkelt:
Var jake = Person ()
Nei, Kotlin ikke har det nye nøkkelordet. Når forekomsten er opprettet, kan du få tilgang til sine eiendommer på samme måte som du ville gjort i Java:
jake.name = "Jake Hill" jake.age = 24jake.college = "Stephens College"
Bruke Constructors
Initial de individuelle egenskapene til vår eksempel måten vi gjorde ikke en god kodepraksis. En bedre måte å gjøre dette ville være ved hjelp av en konstruktør. Kotlin sin syntaks for å lage en slik konstruktør er svært kompakt:
class Person (var name: String, Var alder: Int, Var college: String) {}
Faktisk, hvis du ikke har noe annet å legge til din klasse, trenger du ikke klammeparentes. Følgende kode fungerer helt fint:
class Person (var name: String, Var alder: Int, Var college: String) Var jake = Person ("Jake Hill", 24 ", Stefans College")
Det kan allerede være åpenbart for deg at det er ingen måte du kan legge til egendefinert kode til denne konstruktøren. Denne konstruktøren, som er en del av klassen sin header, kalles primære konstruktøren.
Hvis du vil legge til flere konstruktører for klassen, kjent som sekundære konstruktører, bør du bruke konstruktøren søkeord. Sekundære konstruktører skal delegere til primær konstruktøren bruker dette søkeordet. La oss legge til en sekundær konstruktør til klassen vår som initialiserer verdien av en eiendom som heter e-post:
class Person (var name: String, Var alder: Int, Var college: String) {var e-post: String = "" konstruktør ( navn: String, alder: Int, høyskole: String ?, epost: String): dette (navn, alder, høyskole) {this.email = email}}
For å opprette en forekomst ved hjelp av sekundær konstruktør, skriver du noe sånt dette:
Var jake = Person ("Jake Hill", 24 ", Stephen College", "[email protected]")
Legge medlemsfunksjoner
I Kotlin, funksjoner er opprettet ved hjelp av morsomme søkeord. La oss legge til en enkel medlem funksjon som heter isEligibleToVote som returnerer en boolsk verdi:
moro isEligibleToVote (): Boolean {//Hvis alder er større eller lik 18 //return true retur alder > = 18}
Merk at returverdien type er angitt ved slutten av funksjonen spissen. Du kan kalle denne metoden på samme måte som du ville gjort i Java:
jake.isEligibleToVote ()
Opprette Extensions
Kotlin kan du forlenge en klasse ved å legge flere funksjoner til det uten å endre sin opprinnelige definisjonen. Slike funksjoner er kjent som utvidelser. Navnene på disse funksjonene bør innledes med navnene på de klassene de strekker
For eksempel vil legge til en utvidelse kalt isTeenager til Person-klassen, skriver du inn følgende kode utenfor klassen.
Moro Person.isTeenager (): Boolean {//Hvis alder faller i området //13-19 år tilbake sann avkastning alder i 13..19}
Denne funksjonen er spesielt nyttig når du ønsker å utvide klasser som ikke tilhører prosjektets kodebasen. For eksempel legger inn følgende kode en forlengelse containsSpaces til String klassen:
morsomme String.containsSpaces (): Boolean {return this.indexOf ("") = - 1!}
Opprette Avledet Classes Anmeldelser
Det er viktig å ha følgende i bakhodet når du oppretter en avledet klasse:
Du må bruke en: i stedet for Javas strekker søkeord
Overskriften av base klassen burde. har åpent merknader.
Hvis base klasse har en konstruktør som tar parametre, bør avledet klasse initial disse parametrene i overskriften selv.
La oss lage en klasse som heter Employee at stammer fra Person:
åpen klasse Person (var name: String, Var alder: Int, Var college: String) {...} class Medarbeider (navn: String, alder: Int, høyskole: String ?, Var selskap : String): Person (navn, alder, høyskole) {}
Overordnede medlemsfunksjoner
I Kotlin, må du eksplisitt at et medlem funksjon kan overstyres ved hjelp av åpne merknaden i metodens header i basisklassen. I avledet klasse, kan åpne funksjoner overstyres ved hjelp av overstyring merknaden
For eksempel vil overstyre isEligibleToVote metoden, legger du inn følgende kode til Employee klassen.
Styre moro isEligibleToVote (): boolsk {//Always return true retur true}
Opprette statiske metoder
Kotlin ikke tillate deg å lage statiske metoder. Men det gjør det mulig å skape en pakke nivå funksjoner som ikke tilhører noen klasse.
Den viktigste metoden er kanskje den mest kjente statiske metoden. Hvis du ønsker å legge den viktigste metoden til en pakke som heter com.tutsplus.code.tutorial, da koden din vil se slik ut:
pakken com.tutsplus.code.tutorialfun hoved (args: Array < String >) {}
2. Funksjoner
Du har allerede lært å lage enkle funksjoner i de foregående eksempler. Syntaksen brukt til å opprette disse funksjonene var meget lik den i Java. Kotlin, men lar deg gjøre mye mer med funksjoner.
Opprette enkelt uttrykk Funksjoner
Hvis en funksjon returnerer verdien av et enkelt uttrykk, så kan du bruke = operatør etter funksjon header fulgt av uttrykket som definerer funksjonen
For eksempel vil legge til en metode for å Person-klassen som returnerer true hvis personen er en åttiåring, ville du skriver.
moro isOctogenarian (): boolean = alder i 80 .. 89
Som du kan se, er mer kompakt og lesbar dette stenografi syntaks.
høyere orden Funksjoner og Lambda Expressions
Høyere ordens funksjoner er funksjoner som kan returnere funksjoner eller godta funksjoner som parametre. En lambda uttrykk, på den annen side er bare en funksjon som ikke har noen navn. Vanligvis er lambda uttrykk og høyere ordens funksjoner brukes sammen
Tenk deg følgende eksempel som viser syntaksen til en lambda uttrykk.
{X, y - > x + y}
Dette er en enkel lambda uttrykk som tar to parametere, x og y, og returnerer deres sum. Som du kanskje har gjettet, er parametere til funksjonen oppført før - > operatør og kroppen av funksjonen starter etter - > operatør. Dette lambda uttrykk kan tilordnes en variabel og brukes som følger:
val sumLambda: (Int, Int) - > Int = {x, y - > x + y} val actualSum = sumLambda (3,4)
Legg merke til at den type variabelen som holder lambda uttrykk spesifiserer hvilke typer parametere og returverdien.
Opprette en høyere orden funksjon som kan akseptere ovenfor lambda-uttrykk som et parameter er like enkelt. For eksempel, for å lage en funksjon som dobler resultatet av lambda uttrykk, vil du skrive:
moro doubleTheResult (x: Int, y: Int, f: (Int, Int) - > Int): Int {return f (x, y) * 2}
Du kan kalle denne funksjonen som følger:
val result1 = doubleTheResult (3, 4, sumLambda)
Du kan passere lambda uttrykk direkte til høyere orden funksjon:
val result2 = doubleTheResult (3, 4, {x, y - > x + y})
Lambda uttrykk brukes ofte sammen med arrays. For eksempel vurdere følgende rekke Int verdier:
val nummer: Array < Int > = ArrayOf (1, 2, 3, 4, 5)
Hvis du ønsker å square verdien av hvert element i matrisen, kan du bruke kartfunksjonen sammen med en lambda uttrykk som følger:
val squaredNumbers = numbers.map ({x - > x * x}) //Resultatet vil bli en ny matrise som inneholder //1, 4, 9, 16, 25
3. Klasser
treet uttrykk brukes veldig ofte i Kotlin. Du har allerede brukt dem mens du oppretter isTeenager og isOctogenarian metoder.
Hvis du vil opprette et utvalg, alt du trenger .. operatør.
Val r1 = 1..5 //Denne serien inneholder tallet 1 , 2, 3, 4, 5
Hvis du vil opprette et utvalg i synkende rekkefølge, bruker nedfor funksjonen i stedet.
val r2 = 5 nedfor en //Denne serien inneholder nummer 5, 4, 3, 2, 1
Hvis du ikke vil at trinnet skal være en, kan du angi en egendefinert verdi ved hjelp av trinn funksjonen.
val r3 = 5 nedfor en trinn 2 //Denne serien inneholder nummer 5, 3, 1 < p> Du vil se flere gående uttrykk senere i denne opplæringen.
4. Betingede Konstruksjoner
hvis
I Kotlin, hvis er et uttrykk som returnerer forskjellige verdier avhengig av om vilkåret er oppfylt. Følgende eksempel illustrerer hvordan dette fungerer
Var alder = 20val isEligibleToVote = if (alder > 18). "Ja" annet "No" //isEligibleToVote vil nå bli satt til "Ja"
når
< p> når uttrykket tilsvarer Java svitsj. Det er imidlertid mye mer allsidig. For eksempel, bør du vurdere følgende eksempel
val alder = 17val typeOfPerson = når (alder) {0 - >.; "New born" i 1..12 - > "Child" i 13..19 - > "Tenåring" annet - > "Voksen"} //typeOfPerson vil nå bli satt til "Tenåring"
Som du ser, kan da ikke bare ta enkeltverdier, men også uttrykk som sine forhold.
5. Looping konstruksjoner
for..in
I Kotlin, kan du bruke for..in løkke til løkke gjennom arrays, samlinger, og alt annet som gir en iterator. Syntaksen er nesten identisk med den i Java, bortsett fra anvendelse av den i stedet for operatøren Java s: operatør. Følgende eksempel viser hvordan du sløyfe gjennom en rekke String stedene.
Val navn = arrayOf ("Jake", "Jill", "Ashley", "Bill") for (navn på navn) {println (navn) }
Med hjelp av avstands uttrykk, du kan lage denne sløyfen oppføre seg som en tradisjonell, C-stil, for loop.
for (i i 0..9) {println (i)} //Oppfører seg akkurat som //for (int i = 0; i < 10; i ++)
stund og do..while
Syntaksen stund og do..while løkker i Kotlin er identisk med syntaksen som brukes i Java. For eksempel, looper følgende Kotlin koden over en rekke String objekter ved hjelp av en stund loop:
val navn = arrayOf ("Jake", "Jill", "Ashley", "Bill") var i = names.size ( ) mens (i > 0) {println (navn [- i])}
6. String Maler
Kotlin lar deg legge inn variabler og uttrykk i strenger ved å pakke dem i et par klammeparentes, prefiks med en $ symbol. For eksempel:
val name = "Bob" println ("Mitt navn er $ {name}") //Prints "Mitt navn er Bob" val a = 10val b = 20println ("Summen er $ {a + b } ") //Prints" Summen er 30 "
Konklusjon
I denne opplæringen, lært deg det grunnleggende Kotlin programmeringsspråk. Selv om vi dekket flere konstruerer her, har Kotlin mye mer å tilby. Faktisk, som i juni 2015 er Kotlin fortsatt bare tilgjengelig som forhåndsvisning. Det er sannsynlig å se flere forbedringer og nye funksjoner i de kommende månedene.
Hvis du vil vite hvordan du bruker Kotlin i Android Studio, så ta en titt på hvordan du bruker Kotlin i din android prosjekter. Hvis du vil vite mer om Kotlin språket, jeg anbefaler å besøke dokumentasjonen Kotlin. Anmeldelser