Press "Enter" to skip to content

GOTO 2016 • Kotlin – Ready for Production • Hadi Hariri


la ringrazio molto per essere venuti qui per
dormire e vedere Courtland quanti di
hai usato Kotlin o nessun Kotlin a
un po ‘in passato okay
Gli sviluppatori di Android qui a destra ha visto a
un paio di tracce Android c’è a
un paio di discorsi sulla copertura di Kotlin
Anche Android, quindi potresti voler andare
a questo io non sono una persona Android quindi io
ho pochissima conoscenza di Android
okay, allora ti darò un po ‘di
sfondi su Cortland da dove è iniziato
e dove stiamo andando questo è questo discorso
per lo più codificando, ma abbiamo
alcune diapositive solo per darti
un po ‘di storia quindi è iniziato nel 2010 da
JetBrains che è dove lavoro e noi
erano al momento in cui le piogge di Jeb sono state
in giro per 16 anni e facciamo diversi
tipi di strumenti per lo più facciamo DES e
quindi facciamo squadra dove strumenti e facciamo
alcune cose dotnet e tutti gli ID e
la squadra indossa strumenti che è il server
roba laterale è costruita in Java, facciamo ID
per praticamente qualsiasi lingua che è fuori
lì, ma la maggior parte del codice è in realtà
in Java
quindi anche noi abbiamo appena creato un IDE c-sharp
che è in esecuzione sulla JVM anche se
quello è scritto in cotone e noi eravamo
cercare il linguaggio perché volevamo
qualcosa che era un po ‘di più
Toolable espressivo conciso
interoperabile e nel complesso pragmatico ora
essere più conciso di Java non lo è
impostare la barra in alto perché Java era un
praticamente sovraccarico come diventa
in termini di parole e al momento lì
era fondamentalmente due lingue che erano
potenziali candidati uno di loro era
Scala e l’altro era il salone Scala
non abbiamo scelto per determinati motivi
principalmente al momento e ricorda che siamo
parlando del 2010
le prestazioni erano un problema di attrezzature era a
un grosso problema per darti un po ‘
prospettiva se ci sono circa 35 persone
sul team IntelliJ IDEA c’è circa
Proprio così, 11 persone sul plugin di Scala
ti dà un’idea di quanto sia difficile
a strumento Scala l’altra opzione che avevamo
era un salone che andava benissimo
il problema era ad un certo punto il nostro
interesse in qualche modo divergente con il salone così
è allora che abbiamo deciso di iniziare
arlynn e uno dei nostri obiettivi era
interoperabilità e strumenti che facciamo
strumenti così abbiamo voluto fare in modo che il
linguaggio che creiamo che vogliamo
utilizzare noi stessi per noi stessi la nostra idea era
smettere di scrivere Java ma allo stesso tempo
ogni volta che abbiamo scelto, non abbiamo buttato
16 anni o al momento 10 anni di codice
nel bidone giusto
non siamo la startup che non potrebbe solo
butta via tutto e scrivi il prossimo
la cosa migliore in nodejs o scusa in andare così
quello di cui avevamo bisogno è un linguaggio che potesse
interagire con tutto ciò che avevamo
in modo semplice ed è per questo che ci piace
di si avvicinò con Kotlin dal primo giorno è
è stato sviluppato sotto Apache in OSS e
è stato su github fin dal
lo stato attuale è stato rilasciato a febbraio
2016 e questo è perché volevamo
avere un lungo periodo di cibo per cani perché
è molto difficile creare un linguaggio in
la 1.0 hai una sorta di più o meno
supponi che stai facendo le cose per bene
quindi c’è stato un lungo periodo di test
troweling fuori assicurandosi che non lo siamo
incasinare le cose e c’era lì
sono stati alcuni cambiamenti lungo la strada
decisioni che sono state prese inizialmente
in tutto il linguaggio sono stati successivamente revocati
o cambiato o cosa è andato in un altro
direzione adesso ci sono circa 20
più sviluppatori penso a circa 22 persone
ai JetBrains che ci lavorano è finita
un centinaio di comitati presso i jetbrain
ed è utilizzato in oltre 10 prodotti ora
giusto così il nostro obiettivo con Kotlin non era quello
creare un linguaggio sul quale possiamo allora
bootstrap qualche consulenza o formazione
il nostro obiettivo con Kotlin era creare un
linguaggio che possiamo usare noi stessi e
il nostro impegno per questa lingua e la sua
il futuro è negli strumenti quindi il nostro pane e
il burro che è il nostro strumento è ora in corso
scritto in Cortland IntelliJ ha parti
scritto in Cortland alcuni dei nostri più recenti
gli strumenti sono interamente scritti in Kotlin
alcuni dei nuovi strumenti e servizi che
offriamo sarà scritto in collin e
come ho detto un ID c-sharp che siamo
la creazione è in realtà scritta in Kotlin
pure e non mi piace nominare drop
ma solo se è adatto al mio scopo, allora io
si chiamerà drop ma le persone normalmente chiedono
come quello che aziende e questi sono di più
o meno le aziende che siamo a conoscenza
che stanno usando Kotlin come te
potrebbe riconoscere c’è molto di più di
questi là fuori, ma quelli che
guardare bene su una diapositiva di questi no
mancanza di rispetto per ogni altra azienda che è
usando la colonna e anche se
non hai familiarità con quanti di voi
familiarità con Gradle che ha preso a
molto lavoro che ha animato gif Gradle
recentemente annunciato che sono
fornendo inoltre supporto Kotlin
per groovy che ora stanno per fornire
tu con la possibilità di creare Gradle
script che usano Kotlin quanti ne usano
Gradle va bene e ora lo raccomandano
i plugin sono scritti in Kotlin in questo modo
è successo all’inizio di quest’anno e anche noi
può usarlo ovunque colin non è un
applicazione che non è una lingua
in particolare per Android no
rendere le applicazioni mobili che creiamo strumenti
quindi abbiamo creato un linguaggio per noi stessi
inizialmente per qualsiasi tipo di strumento che noi
fare ma il suo scopo è industriale così
qualsiasi tipo di applicazione si può utilizzare
cavo compatibile con Java 6 e
il piccolo runtime e le prestazioni saggia
va bene in termini di compilazione in
termini di runtime è lo stesso perché
è il codice byte in cui si traduce
codice byte molto è stato adottato
andare in giro per Android così tanto
Gli sviluppatori di Android stanno usando GABEN è
anche simile a Java c-sharp JavaScript
Groovy Scala e ogni altra lingua
là sotto il sole ti permette a
Rapido tempo di accelerazione, quindi non è così
una partenza di dire che vado da
Java alla chiusura Vado da Java a
Haskell questo è qualcosa che sei
familiarità con e sarete in grado di ottenere
dilagato in poco tempo e se lo hai mai fatto
ho visto Rick Hickeys parlare di un semplice
reso facile dice che facile è qualcosa
con cui hai familiarità con le sue parole
questi sarebbe Kotlin sarebbe facile
anche se ci piace pensare che sia abbastanza
semplice e anche dato questo
l’interoperabilità è primaria è un grande
fattore per noi consente un’adozione graduale
e vedremo in modo che tu possa effettivamente iniziare
per creare classi Kotlin nel tuo codice o
inizia a creare le funzioni di Kotlin e
interrompere tra Java e Kotlin facilmente
e non devi limitare questo a
test che a volte ci provano
e prendi una nuova lingua
vedendo se possiamo scrivere test intorno ad esso
come puoi usarlo?
per rendere il cotone aperto e libero come
possibile ovviamente il nostro lungo termine
l’interesse è che continuiamo a prosperare
come una società di utensili e che le persone usano
cotone e di conseguenza IntelliJ IDEA
ma è completamente aperto, quindi puoi usarlo
da una linea di comando di Maven Gradle
cobalto che è un sapore di Gradle
usando Kotlin e se stai ancora usando
e IntelliJ IDEA sia la Comunità
Edizione così come l’Ultimate Edition
Android studio Eclipse e l’ unico
manca da qui qualsiasi NetBeans
Gli sviluppatori NetBeans ok bene ora che avete
ottenuto NetBeans – abbiamo avviato il plugin per
NetBeans quindi creiamo effettivamente il
plug-in per IntelliJ IDEA Android
studio Eclipse e NetBeans ok puoi farlo
dicono dove le caratteristiche stanno per andare
prima ragione ma come ho detto è così
riga di comando in modo da poterlo effettivamente aprire
su nella riga di comando e scrivere il codice in
vim e poi dove vai o Emacs ok così
vediamo qualche codice per qualsiasi domanda
in realtà non posso davvero chiedermelo
non puoi nemmeno avere microfoni così anche
se parli ad alta voce
ma per favore interrompimi se lo hai
tutte le domande quindi creerò a
nuova applicazione qui e puoi vedere
che posso selezionare Kotlin ora normalmente io
non farlo, normalmente uso Gradle
Grails il mio sistema di build predefinito ma per
per le demo questo funziona davvero bene
e creeremo una nuova app qui
avere e Colleen arriva con un piccolo
runtime è molto piccolo è come 900
kilobyte cerchiamo di tenerlo piccolo e
mantiene la libreria standard lì
che fornisce un sacco di ulteriori
funzionalità che vedremo come
il tuo filtro mappa mappa tutti questi
cose e puoi spedirlo con il tuo
con il tuo sai che puoi barattartelo
può zip che si può fare quello che vuoi
con esso ha colpito OK e ora ho il mio
Applicazione Colleen Posso venire qui e
Posso dire di creare una classe Kotlin e lo farò
chiama questo andare per andare a vedere il pH così posso
chiamalo come voglio e poi posso
sputare fuori principale e principale è fondamentalmente il
punto d’entrata
un’applicazione giusta quindi è un po ‘di
come nel mondo Java sarebbe il
equivalente di vuoto statico pubblico in a
principale statico pubblico vuoto statico principale e
Posso dire la linea di stampa ciao Copenaghen
e fai clic con il pulsante destro del mouse o premi okay e quello
eseguirà la compilazione è incrementale
compilazione quindi la prima volta ovviamente
è un po ‘lento dopo questo
diventa più veloce okay e ci puoi
vedere
ciao Copenaghen va bene e questo è il più lontano
come vado in termini di mia codifica dal vivo
capacità
um va così puoi davvero come posso
selezionare questo codice e quindi creare a
messaggio e quindi impostare un punto di interruzione come
bene e poi posso eseguire il debug e poi vedo
tu conosci il mio punto di interruzione ho il
debugger e tutto okay un paio di
ovviamente non ho menzionato le cose
Kotlin è un linguaggio a tipizzazione statica è
compila fino a Java e alla JVM
e su JavaScript cosa stiamo andando
vedere principalmente in questa sessione è
targeting per Java ma praticamente tutto
i costrutti e tutto ciò che vedi possono
anche target JavaScript perché lo facciamo
JavaScript perché ogni lingua Under
il sole fa di nuovo JavaScript se lo sei
non ti capita di entrare nel hipster
comunità quindi abbiamo dovuto fare JavaScript e
ci sono alcuni casi d’uso molto buoni per
combinazione di Java e JavaScript in a
progetto singolo ok
quindi lasciatemi solo mostrarti come
lavori che sto per andare a creare un Java
classe quindi chiamerò questo per esempio
il cliente Java e io lo farò per esempio
private int ID private string name e
quindi creare i getter e setter ok
ora tornerò al mio andare a
Copenaghen e quello che farò è che dirò
Val un cliente Java equivale a cliente Java
giusto così vedi che posso compilare questo
e tutto funziona bene completo in due
su avviso una cosa già che lì
non è una nuova parola chiave in Kotlin, quindi non lo fai
devo scherzare con te
contrariamente a javascript che non usiamo
convenzioni per indicare che a
costruttore è così non hai per te
sappi rendere questo più basso puoi renderlo basso
caso ma seguiamo il tipo di Java di
convenzioni in termini di denominazione ecc
quindi ora guarda qui se faccio cliente
Java vedo che ottengo l’ID ma il
il completamento mi offre anche l’ID e il set
ID giusto perché in Java siamo
abituato a ottenere l’ID e impostare l’ ID
leggi set per scrivere la codifica che non abbiamo
getter e setter come tali abbiamo appena
proprietà quindi se stai usando Java da
Kotlin segui la chiamata
convenzioni su come accedere agli oggetti
funzioni ecc e se stai usando
chiamando da Java segui il Java
convenzioni quindi potrei davvero scrivere
per esempio ottieni ID e funziona bene
e poi andiamo avanti e presentiamo
questo come variabile I e puoi vedere
che l’IDE mi sta dicendo
usa l’ accesso alla proprietà giusto così fa
permettimi di scriverlo ma posso solo usarlo
la convenzione che il modo in cui sei
intendevo usarlo a Kotlin, okay, se io
crea una chiamata in classe qui ne noti uno
altra cosa che qui ho un main
funzione senza classi proprio così dentro
chiamarti hai la capacità di avere
funzioni di primo livello che vedremo
più tardi quindi non devi metterlo
tutto in una classe di aiuto
questo è statico con funzioni statiche
giusto e poi il tuo collega mette il suo
funziona in una classe ausiliaria che
allora ti chiedi dove sono le funzioni
sono essi nella classe di supporto o nel
classe ausiliaria non hai questo
problema con Kotlin nel chiamare è possibile
basta mettere le funzioni in qualsiasi file e poi
puoi capire dove sono nel giusto
un po ‘ come JavaScript al posto di
alla ricerca di classi è possibile cercare
file, ma il punto è che abbiamo tagliato
sul codice boilerplate non avendo voi
è necessario creare le lezioni solo per
contengono alcune funzioni in loro da
predefinito dal modo in cui Cortland utilizza il
pacchetto predefinito ma tu
e dì qualunque cosa, per quanto sia davvero CPH
esempio okay non devi seguire
le convenzioni di denominazione di voi non hanno
seguire come una sorta di morte di a
mille cartelle in termini di avere
tutto in quello stesso pacchetto ma tu
lo facciamo anche fuori dalla convenzione
puoi avere più di una classe in a
singolo file in colonna quindi lasciami andare avanti
ora se puoi vedere se vedi questo
giusto questo è fondamentalmente 89 s di codice per
due proprietà okay , lasciami andare avanti
e crea questo ora a Kotlin, così posso
dì il cliente Kotlin e creerò un
classe e Colleen non ha campi
tutto è un diritto di proprietà quindi io
potrei solo dire che Val ID è uguale a int e
allora un nome val uguale alla stringa va bene
ignora che per ora in realtà lasciami solo
crea questo fino a quel punto che non lo faremo
avere quel problema va bene questo è solo dicendo
non è inizializzato ma lo si dimentica
adesso
ecco la convenzione che seguiamo in
Collin è il nome due punti e il tipo così
se usi due Pascal è uguale
concetto var significa mutable Val significa
immutabile o di sola lettura, chiamando
non imponiamo l’ immutabilità immunitaria ma
lo raccomandiamo e vedrai
che abbiamo interfacce su Java
collezioni che hanno versioni mutevoli
e versioni immutabili ma non voglio
farlo in questo modo quello che posso fare di fatto
è solo dichiarare le mie proprietà sul
stessa linea di una classe, posso dire l’ ID della val
bene var perché facciamo questo Ron
Val ID int e quindi var name string okay
in effetti non ho bisogno di questo
apri e chiudi o così è
in pratica quello che ho appena creato in Java
praticamente tranne che ne ho uno
cosa aggiuntiva che ho anche io
aggiunto un costruttore giusto quindi questo significa
che quando inizializzo il mio cliente in
Kotlin Devo passare in due proprietà
l’ID e il nome ma in termini di
linee di codice è esattamente la stessa di
questo bene non è esattamente lo stesso
esattamente la stessa funzionalità di base
eccetto che qui è mutabile ce l’ho fatta
immutabile, quindi questo non l’avrebbe
setter okay se vogliamo farlo
setter lo faremmo proprio così
essenzialmente ho ridotto tutto
codice boilerplate a qualcosa di meno ora
sei abbastanza giusto da dire che l’ID
lo genera per me sì non abbiamo pensato
di quello quando stiamo facendo questo e
mettendoci fuori dal mercato
ma tu sai che è inutile quel codice
è inutile e il problema è che lo è
inutile non perché l’ IDE possa
generalo per te quindi non sta causando
tu emetti che non sai se
il codice che hai in sei mesi
lungo la linea se è stato generato
dall’ID o ha alcune cose personalizzate
è solo più codice che è nel tuo
codebase ora posso tornare qui se io
so come usare un IDE e posso creare
alcune altre cose, ad esempio, per stringere
giusto e posso creare uguali e un hash
codice giusto ok ora ho due
string equals e hashcode e ora siamo
a 48 righe di codice va bene rimuovi
gli spazi bianchi qualunque torniamo indietro
al mio cliente e chiamarlo e fare il
stessa cosa va bene così ora che dà
io una classe con due stringhe ottiene il codice hash
uguale e mi dà anche qualcosa
altrimenti che è copia quindi se vengo qui io
posso dire che val cliente Kotlin è uguale
cliente Kotlin e poi devo passare
un numero e un nome che mi chiamano così
tra l’altro notiamo che anche noi no
avere il punto e virgola in modo da poterlo utilizzare
punto e virgola se hai un video
tuttavia devi avere guerre di fiamma
sulle notizie degli hacker sul fatto che dovresti
o non dovrei usare il punto e virgola così ho
il secondo cliente che Kotlin e io possiamo fare
copia del cliente Kotlin che verrà copiata
quella classe di dati per me e io posso
sovrascrivere i valori per cui posso eseguire l’override
esempio solo l’ID se faccio una linea di stampa
del cliente Kotlin vedremo cosa
mi prende
così puoi vedere che ottengo piacevolmente
output formattato di ciò che la stringa due
sarebbe in cotone okay e tutto il resto
è fondamentalmente solo aggiungendo questo
modificatore che è okay, se necessario
Posso effettivamente avere sai che posso
scavalcare le due stringhe che posso sovrascrivere
gli uguali posso ignorare qualsiasi cosa io
voglio ma fuori dalla scatola è quello che
navi con ora questo è buono
perché in pratica questo codice è giusto
tipici fagioli Java che stai creando
più e più volte e nel chiamarti
può semplicemente ridurlo a una singola riga
di codice tutte le domande finora sì il
la domanda è: quanto è profonda la copia?
essenza se ho per esempio una lista di
copie se sta per fare una copia profonda
Credo che no, non fa solo il
il labbro superiore si un’altra domanda che otterrò
a quello in un momento la domanda è come
funziona l’ereditarietà con i costruttori
quindi questo è quello che hai visto adesso
fondamentalmente un costruttore primario che cosa
in effetti puoi dare il default
valori e anche due costruttori primari
quindi posso dire che questo è 0 e
questo è vuoto e questo significa
ora posso creare un’istanza
di costume a Kotlin senza specificare
qualsiasi parametro di input va bene
inizialmente l’abbiamo appena lasciato
quella
ma poi c’erano persone che tu conosci
detto no, in realtà voglio avere il
capacità di avere costruttori secondari
ecc. e vedremo come puoi farlo
e quindi fare riferimento al primario
costruttore ecc. ok un’altra cosa
che abbiamo anche degli oggetti incontinenti
quindi posso effettivamente dire per esempio oggetto
globale e pi è uguale a 314 al momento
notare un paio di cose questo è
in pratica come si implementa un singleton
in Kotlin, giusto perché abbiamo lo stesso
concetti come javascript javascript è un
linguaggio che solo in realtà ha solo
oggetti non ha classi e poi
dattiloscritto è arrivato
abbiamo classi e abbiamo oggetti così
si può semplicemente implementare un unico turno da
solo dichiarandolo come un oggetto e
ci sono casi d’uso oltre ovviamente
solo creando di nuovo l’avviso di Singleton
qui che la colina è molto grande nel tipo
inferenza giusta, quindi non ho bisogno di essere
esplicito qui non ho bisogno di dirlo
questo è doppio diritto
Posso solo dire pi uguale a me
inizializzarlo lo capirà
ci sono casi per esempio se lo faccio io
non conosco Val un valore lungo e voglio
questo per essere lungo se metto 10 lo farà
penso che sia un numero intero ma abbiamo
alcuni caratteri che puoi usare
indica cosa è in questo caso
starebbe bene e questo è un
oggetto globale che va bene usare
perché è di sola lettura, quindi posso dire
PI globale e quindi basta stampare questo
fuori e via vai
va bene ovunque dove quel PAC che obietta
è dichiarato nel pacchetto è
accessibile ora funziona come te
possiamo vedere che abbiamo praticamente creato un
funzione e puoi creare qualsiasi altro
funzione quindi per esempio ciao mondo solo
prende un messaggio e quindi potrei proprio
scrivi ad esempio la linea di stampa a destra
per impostazione predefinita, Cortland utilizza di default
se non si specifica il tipo restituito è
vuoto che in Colin è rappresentato come
unità è esattamente la stessa del vuoto
eccetto che è un oggetto per cui puoi eseguire una query
su di esso puoi dire oh questo è reale
unità destra e di default il
l’implementazione di to string sta dicendo
tu che è un’unità chiamante se voglio
per specificare il tipo di reso, allora ho solo
specificare un tipo di reso quindi ad esempio divertente
aggiungi i numeri X int Y int quindi int return
X più y giusto questo è il tipo di ritorno
ora nei casi in cui Kotlin può effettivamente
dedurre il tipo di reso che non è necessario
essere esplicito perché potrei metterlo
tutto su un’unica linea semplicemente
fare qualcosa di simile
quindi non ho bisogno di aprire le parentesi vicino
parentesi quando la mia funzione è fondamentalmente
restituendo un’espressione che posso semplicemente mettere
Ovviamente su una singola riga posso esserlo
esplicito anche sul tipo di ritorno
ma non è necessario okay così quando lo sei
le call call call in scrittura non lo sono
davvero fai il tutto lo sai questo è un
stringa e lascia che inizializzi come a
stringa e quindi inserire qualche valore ora se
stai facendo Java, molti di voi qui sono
Java o C sharp o c’è un mix o Java
C nitido
va bene JavaScript e in realtà divertiti così
se lo stai facendo
Java sai che Java 9 credo sia
andando a venire con l’intera var
giusto e ora ci sono discussioni senza fine
dibattiti in corso nella comunità che
questo sta andando a diminuire la leggibilità
bla bla bla bla bla bla se tu
riavvolgere otto anni fa abbiamo avuto quelle stesse
dibattiti in c-sharp e non è successo nulla
tutti hanno continuato a scrivere C sharp
tutti usano var va tutto bene
c’è stato un aumento di persone
adottando JavaScript e non so se
cioè ha alcuna correlazione se è
poi hanno fatto qualche danno ma
altrimenti niente è veramente andato male
okay, cos’altro abbiamo con il
funzioni anche proprio come costruttori I
può avere i parametri di default giusto e io
possono avere parametri secondari pure
messaggio secondario e poi posso te
sai usarlo e poi se voglio
invoco ciao mondo puoi vedere che io
basta avere i tempi del parametro type
informazioni e ho il primo messaggio e io
posso anche cambiare l’ordine, quindi posso dire
per esempio il messaggio secondario è uguale
il valore del messaggio è uguale a un altro, quindi
hai dei parametri di nome che significano te
può cambiare una posizione dei parametri
hai parametri predefiniti o facoltativi
parametri e quindi puoi anche avere un
numero illimitato di parametri così
stringhe illimitate scusate per archi archi
corde giuste e poi potrei proprio
scrivi illimitato illimitato a
tre illimitate okay
di nuovo immagino di saperlo digitare così
è giusto in termini di funzioni giuste
è davvero davvero molto semplice e se
fai JavaScript lo vedi lì
è un po ‘di una somiglianza qui e
JavaScript corretto tranne invece di
funzione semplicemente scriviamo divertendoci anche noi
il concetto di tripli screzi tuples
eccetto che lo stiamo limitando a due valori
giusto così se vuoi tornare mi dispiace
due o tre se vuoi restituire due
valori che potresti fare un paio di corde
string o int per esempio se vuoi
per restituire tre valori che puoi fare
triplica se vuoi tornare di più
valuta la classe di dati utente che inizialmente avevamo
tuple lo abbiamo rimosso perché se ne avessi uno
i nostri obiettivi sono quella concisione e anche
leggibilità ed espressività una volta
iniziare a restituire sette valori da a
tuple hai perso la traccia okay ma puoi
fare certe cose, ad esempio se io
dovessi chiamare illimitato fammi solo
rimuovere il parametro qui in modo che noi
concentrati sul tempo se dico per esempio
su Val illimitato è uguale a ora illimitato
questo non posso fare il valore di ritorno prima
seconda terza destra e il problema lì
è che si perde di nuovo il
significato in modo che tu possa davvero fare
decostruzione del valore per cui posso fare
istanza Val nome email e ID è uguale
diritto illimitato e quindi accedere all’accesso
i valori vanno bene direttamente così puoi farlo
quello con coppie e tripli in effetti voi
può farlo anche con le classi di dati
se dovessi prendere la mia classe di dati che io
sono al piano di sopra , giusto, che ho
un ID e un nome che potrei fare più o meno
lo stesso potrei
per l’ID e il nome e poi fare
cliente Kotlin qualcosa di giusto così
puoi decostruire anche i valori quali
ti dà quel tipo di più
Espressivo giusto così di nuovo se io
avere per esempio una lista di elementi o
una lista di numeri ed ecco come puoi
dichiara un elenco di numeri da 1 a 100
che è davvero bello è come Haskell
e posso fare per il numero nella lista di
numeri e poi fare quello che voglio con
il numero e se sto restituendo una lista
di coppie, ad esempio, potrei fare il
la stessa lista di cose di coppie è uguale alla lista
mi dispiace elencare e poi posso fare coppia
Madrid, Spagna, adesso puoi anche fare
questo in un po ‘più conciso un altro
modo espressivo che poi spiegherò
a te come funziona ma se potessi
in realtà scrivere ad esempio a Parigi
Francia, quindi sto creando coppie e
Sono o una mappatura qui quello che sto facendo su
mappatura di Parigi in Francia Madrid in Spagna
e notare che non devo passare
la coppia della stringa di stringa a destra
il compilatore deduce tutto ciò che posso fare
anche questo nel ciclo for e basta
per esempio città di paese nella lista di
coppie
e quindi accedere a ciascuno di questi
e per sbarazzarsi di quel potenziale problema
che tu abbia informazioni in termini di dovrei
usare la valvola o diminuirà o
aumentare la mia leggibilità non si nome
la tua lista di variabili di coppie che nominate
loro paese e città okay c’è il tuo
ragionevolmente t-back okay tutte le domande si
Sì, va bene, quindi la domanda è: perché l’ hai fatto
fai questo se c’è se c’è Scala
fondamentalmente va bene, quanto tempo fa
hai la manopola principale il motivo principale è
o direi guardare prima di tutto
se sei felice con Scala non lo fai
ho bisogno di Kotlin prima di tutto
il modo in cui lo metto è mentre con
scarlet scala ti permette di fare fondamentalmente
qualsiasi cosa come te può prendere qualsiasi simbolo
e sovrascrivilo sovraccarico che puoi fare
praticamente nulla con Scala con
Cortland non puoi essere intenzionalmente
limitando il linguaggio che stiamo volutamente
limitando ciò che puoi e non puoi fare
questo ci dà migliori possibilità di
strumento che ci dà di meglio
possibilità in termini di prestazioni
questa è la ragione per cui mentre con Scala
potresti avere per esempio nel tuo
società credo che Twitter per
l’istanza ha questo se mi sbaglio per favore
correggimi hanno una guida di stile di
cosa dovresti o non dovresti fare in Scala
stiamo cercando di sbarazzarci di quello stile
guida e dì che il compilatore sta dicendo
tu quello che puoi e non puoi fare così è
fondamentalmente la migliore risposta che potrei dare
un’altra affermazione sul valore della domanda
intendi un po ‘ come
contratti basati se ce ne sono alcuni no
fuori non invitare Colin se stesso ora va bene
quindi andiamo avanti sono sicuro che sei stanco
di me che digito così sto per cambiare
su un codice che ho preparato
giusto avresti dovuto dire di no
in realtà sono stanco che tu stia scrivendo
facendo un ottimo lavoro solo continuare a farlo
non ti preoccupare non ti preoccupare okay ora tu
so come posso navigare il mio albero um così
cos’altro abbiamo così di nuovo vado
per mostrarti alcune cose in termini di
concentrandosi sulla leggibilità e
espressività vero è un mucchio di
caratteristiche linguistiche diverse ma con a
punto focale del motivo per cui lo abbiamo fatto, quindi qui puoi
vedere che per esempio ho
condizionali e, se espandibile, possono essere
usato come una dichiarazione o come espressione
quindi qui sto usando se come espressione
questo significa che se l’input è
più di 100 linee di stampa qualcosa
e 30 l’ ultima riga di if block è il
valore di ritorno effettivo e potrei in effetti
ritorna qui una stringa e funziona
giusto perché ora il risultato sarà
valutato per qualsiasi qualsiasi è il livello più alto
oggetto in Kotlin così posso tornare
diversi tipi diversi da un if
espressione che puoi usare anche se come
dichiarazione se stai usando se come
espressione quindi ogni ramo ovviamente
ha bisogno di avere un certo valore il motivo
questo è quello che tu eviti di nuovo
assegnazioni di variabili intermedie ecc
puoi semplicemente restituire l’espressione
un valore la stessa cosa vale per quando e
lo vedremo un po ‘più tardi
casting ora questa è una cosa che è
diverso da Kotlin e alcune persone
non sono felici molte altre persone lo sono
felice così mi dici se sei felice tu
non sono felici
di default le classi di Kotlin sono definitive
significa che non puoi ereditare da
loro chi è felice
chi è infelice chi non dà alcun diritto
quindi se voglio ereditare da una classe
prefisso freddo con ok ok
ora l’open mi consente quindi di implementare
erediti da quella classe, quindi qui ho un
dipendente di classe che eredita dalla persona
proprio qui ho un’altra classe che è
imprenditore che eredita anche da
persona ora qual è la differenza principale
tra un appaltatore o un dipendente bene
per cominciare non si ottiene una vacanza
quello che fai paghi solo per loro
te stesso quindi qui ho una funzione
sta prendendo una persona e dice se la persona
è giorni di vacanza per i dipendenti meno
di 20 puoi dirmi cosa manca?
costano perché il compilatore in
è lontano e vedo che lo vedi
un cast intelligente per il tipo effettivo va bene così
non è un grande
oh wow ma è un grande oh, ho appena salvato
io stesso un po ‘digitando ancora e ancora
posso dire bene IntelliJ IDEA o il mio
l’IDE preferito lo genera per me sì
ma aggiunge un sacco di confusione al codice
che è ciò che stiamo cercando di rimuovere come
bene ora chi ama i null è sempre uno
persona
qui è null qui è il codice Java va bene e
dal modo in cui questo è um se non sei
familiarità con ciò sono le legature dei font
e IntelliJ IDEA quindi è fondamentalmente
lo stesso di me scrivendo questo ok se
non c’è altra ragione per cui tu lo faccia
aggiornare a IntelliJ IDEA che dovrebbe essere
esso
quello e tu puoi mettere sfondi
okay trasparente, non importa
Giusto, um bene santo, sì, va bene , eccomi qui
avere un cliente valido che sta accettando
un cliente Java perché è un Java
classe e ho se i clienti non sono nulli
se il cliente ottiene il nome non lo è
null se inizia il nome del cliente
con un nome non è permesso iniziare
con un vivo in Spagna questo è un po ‘
le regole commerciali che abbiamo in Spagna
non chiedere perché e puoi vedere che io
avere diversi livelli di null perché io sono
controllo continuo su note giuste
in colonna non abbiamo valori null per impostazione predefinita
quando dichiari una variabile non può essere
no puoi creare una variabile nullable
ma di default non è nullo, quindi se io
vieni al servizio clienti qui questo è un
cliente in Java ma se scrivo cliente
a Kotlin puoi vederlo
qualcosa cambia qui, questo mai
essere no non può essere conosciuto quindi non ho bisogno
fare controlli nulli se voglio creare o
dichiaro qualcosa che non è in grado di aggiungere
il punto interrogativo dopo di ciò che significa
che questo ora può essere annullabile se lo faccio
che puoi vedere che l’IDE mi dice
questo rovina solo il compilatore solo al sicuro
che è l’operatore Elvis o null null
le asserzioni sono consentite su un valore nullo
tipo che significa essenzialmente che io
dovrebbe ora fare qualcosa come se
il cliente non è non è ora allora
accedi al nome del cliente giusto ma
invece di aumentare quel codice puoi farlo
usa questo diritto che è gentile
equivalente al facoltativa per così dire
e puoi iniziare a concatenarli
l’altra opzione è il doppio hash bang
il che dice che non mi interessa sapere che è ora
Voglio ottenere un’eccezione di riferimento null
perché mi mancavano queste cose, quindi vai
avanti e invocarlo perché dovresti usare
che ci sono alcuni casi molto rari in
che si può usare questo va bene ora che cosa
succede che ho parlato di interoperabilità
cosa succede se faccio questo notate cosa
succede non appena cambio a destra
passa da corsivo a non corsivo ora
questo mi sta indicando un paio di
cose ma qui possono essere personalizzati e Java
null in modo sostanziale che questo codice possa generare
un’eccezione di riferimento null adesso
inizialmente quando lo abbiamo fatto con Kotlin
abbiamo detto qualcosa che viene da Java
può essere nullo dunque tutt’altro che
viene fornito con Java avrà a
punto interrogativo e quindi stai andando
dover usare un punto interrogativo
ovunque e abbiamo visto basi di codice con a
molti punti interrogativi e sembrava brutto
poi abbiamo deciso che va bene possiamo fare un
libreria di annotazioni che può annotare
e dedurre quando i casi non lo sono o no
nulla e poi ti dico che certo
alcuni casi che il punto interrogativo non è
richiesto non ha funzionato troppo bene
o così allora abbiamo fatto quello che va bene
consulente per fare e dire che dipende
giusto e lo lasciamo nelle tue mani se
tu credi che l’oggetto che sei
ottenere può essere nullo aggiungere un punto interrogativo
se non lo sai, lo sai
andando potenzialmente ad affrontare un null
eccezione di riferimento quindi ecco il codice
ti dà la capacità di qualsiasi tipo che è
proveniente da Java che puoi dichiarare
esplicitamente come nullable o non annullabile
e questo significa anche che per esempio se
prendi un’interfaccia in Java e tu
implementare quell’interfaccia in Kotlin
può usare i parametri del tipo per esempio
i tipi che vengono passati nel
metodi che stai ignorando o
implementarlo può
e definirli come annullabili o è possibile
rimuovili e dì che non sono annullabili
è fondamentalmente lasciandolo nelle tue mani
in termini di quando ha senso usare
e quando non va bene così abbiamo visto
funzioni ora nessuna lingua potrebbe rispettare
se stesso non fosse funzionale
soprattutto oggigiorno giusto e qui
Kotlin è anche funzionale ora funzionale
per linguaggio funzionale intendo qualsiasi
linguaggio che ti permette di fondamentalmente
trattare le funzioni come oggetti primitivi
proprio qui c’è una scuola di pensiero
crede che l’unico funzionale
la lingua del mondo è Haskell e
tutto il resto cerca di essere Haskell
il contesto di posso usare le funzioni come
blocchi elementari primitivi e quindi
questo è un linguaggio funzionale allora sì
func Kotlin è un linguaggio funzionale e
ecco come dichiaro un ordine superiore
funzione che è una funzione che richiede
una funzione o restituisce una funzione così qui
Ho una funzione che ne richiede un’altra
funzione come parametro che è int prende
due parametri di tipo int in e
restituisce un int ok e quindi stampa linea
funzione due e tre lo sto invocando
qui ho una funzione dichiarazione mia
somma XY int restituisce X più y che abbiamo
visto se voglio chiamare l’ordine superiore con
quella funzione posso usarlo io posso
riferimento per nome usando due punti del colon
ora in JavaScript sarebbe giusto
usando il nome della funzione qui devi
usa i due punti e puoi fare lo stesso
per istanze di classi che posso usare anche
lambda Ho lambda in colonna a destra
e si vede che io non devo essere
esplicito sui tipi anche a destra
di nuovo lo infastidisce e sa che è così
nigra quire è un lambda che ne prende due
interi e restituisce un numero intero quindi no
dobbiamo essere espliciti ora facciamo un passo avanti
inoltre con i lambda e fare
qualcosa di simile a groovy, quindi posso
dichiarare questo lambda notare come è
in realtà l’IDE non ha inserito il
parentesi per me e questo è perché noi
segui la stessa convenzione di groovy
che se l’ultima funzione a un altro
la funzione è una funzione l’ultima
parametro per una funzione è una funzione
allora puoi
passare oltre le parentesi in
questo caso ho solo un singolo parametro
quindi posso semplicemente passarlo al di fuori del
parentesi quindi posso fare questo multi-linea
giusto, so che non sembra un
la funzione lo fa più
sembra più un po ‘come una parola chiave
tipo di cosa è giusto come l’ ordine elevato
potrebbe potenzialmente essere qualcosa che io
potrebbe aggiungere alla lingua, quindi perché dovrei
fallo perché qui mostra molto bene
è l’ istruzione using in c-sharp that
non hai Kotlin okay, eccomi qui
hai in c-sharp hai fondamentalmente è
tipo di simile a provare con risorse I
può prendere un oggetto usa e getta che chiami
usando e poi assicurati che dopo il mio
usando il blocco libera quell’oggetto e
equivalente in Java sarebbe quindi chiudibile
qui mi sto avvicinando, sto dichiarando a
funzione che prende chiudibili e poi
un’azione che non richiede parametri e
restituisce unità e poi sto andando a
invoca l’ azione e infine chiudi
è giusto chiudere quell’oggetto in modo che significhi
che oggi avrei potuto fare qualcosa di simile
usando il mio oggetto diciamo qualunque cosa
oggetto di chiusura è fare qualcosa con il
obiettare e sapere che una volta che ho finito
con esso sarà chiuso per me quindi sono
un po ‘ come l’aggiunta di micro micro è un grande
parola al giorno d’oggi micro DSL è – la mia lingua
tipo di estenderlo un po ‘con
alcune funzionalità vanno bene e vedremo
alcuni altri esempi di questo, ad esempio
se andiamo a lasciare con applicare puoi vedere a
alcuni di più fanno parte dello standard
libreria quindi con file file se è lontano
cosa manca qui cosa manca qui
è l’ oggetto reale su cui sono
chiamando quei metodi e proprietà e
proprietà dei parametri di funzione e
membro funzioni membri giusti che è
Ciò che manca qui non ho bisogno di
perché questo con la funzione qui è
restituendo quell’oggetto per me così posso
accedervi dentro la mia espressione lambda
questo fa parte della libreria standard e
Ti mostrerò come è implementato
un po
minuto in un po ‘perché questo è chiamato
il lambda con ricevitore che vedrà
cos’è questa un’altra cosa che facciamo
con simile a crescere a groovy è se il
lambda ha un singolo parametro che non hai
devi essere esplicito a riguardo
basta usarlo bene
quindi riferisciti ad esso come ora abbiamo un mucchio
di cose all’interno della libreria standard così
qui ad esempio ho una classe dati
traccia della classe di dati dell’album quindi elenco di
album Dark Side of the Moon con il suo
tracce okay
questa volta la biblioteca mi fornisce
funzionalità pronte all’uso come
filtro ordinato mappa mappa piatta tutti questi
cose a cui potresti pensare quando
stai tipo di concatenamento risultati da
collezioni ecc. ce ne sono anche molte
funzionalità aggiunta in termini di
stringhe così hai per esempio in
inizia la sottostringa prima ecc. ecc. il prossimo
cosa se guardi ognuno di questi te
può vedere quello che effettivamente usa
questa sintassi del tipo questo è come te
definire definire un tipo generico in coddling
lo si prefissa con T e poi si digita quale
sta per essere generico c’è un punto e
c’è un filtro che cos’è esattamente
le estensioni delle funzioni non sono corrette se
hai familiarità con c-sharp sai
che avrai metodi di estensione in
c-sharp che fondamentalmente crei a
classe statica e quindi un metodo statico
all’interno di quella classe statica con a
parametro questo e quello ti permette di
estendere efficacemente quella classe con nuove
funzionalità senza dover ereditare
da esso abbiamo la stessa cosa in
chiamando le loro funzioni di estensione e a
molte delle cose che vedi in chiamata
in un sacco della libreria standard sono
semplicemente la funzione di estensione su
tipi di Kotlin e Java esistenti, quindi qui
quello che sto facendo è che sto estendendo il
classe di stringa con un pasticcio con una funzione
chiamato ciao va bene dato che non ho
la necessità di creare questo livello superiore
classe conosci una classe statica e poi a
metodo statico ho potuto solo dichiarare che
funzione di estensione in un file e
qualunque sia quel pacchetto è qualunque cosa
il pacchetto è importato che l’estensione
la funzione può essere utilizzata così ho appena aggiunto
ciao alla classe di corda a cui posso accedere
l’ istanza della classe che sono
estendendo così posso farlo con questo mio
funzioni di estensione possono anche prendere
parametri e puoi anche avere
le proprietà di estensione non solo funzionano
e ora ho potuto fare cose come questa è
ciao, questo è Hardy benvenuto, proprio così
stringa di classe qualsiasi stringa ora ha il mio nuovo
funzioni di estensione e quindi puoi farlo
cose divertenti come ad esempio divertimento
la stringa dovrebbe essere uguale a destra e poi tu
metti la stringa di valore e questo restituisce per
ad esempio un booleano e poi dici
il valore restituito è uguale a questo, quindi io
potrebbe fare qualcosa come te lo sai
dovrebbe eguagliare questo diritto, ma anche il cotone
ti permette di usare nella notazione delle fix quando
l’azione ha un singolo parametro o un
la funzione di estensione ha un singolo
parametrizza una funzione membro o un’estensione
funzione in modo da poter utilizzare in difficoltà ora e
allora potrei fare questo dovrebbe essere uguale a questo
ancora una volta uno dei nostri obiettivi era il
capacità di creare il s i e
cose di bell’aspetto e vedremo di più
esempi di questo va bene
se hai domande, urla che sono
solo un’altra cosa che tipo di
costruito in Delegazione Kotlin tipo di
supporto di prima classe per la delega qui
ho un tipico schema di repository e
il modello di deposito mi dispiace yeah a
repository che è sbagliato
implementazione di ogni repository
là nel mondo, ma abbiamo fatto tutti
come questo che si ottiene da aidid every
tempo t ottenere tutti i ritorni una lista
questo piccolo risalto è qui
questo sta dicendo che questo potrebbe essere un
controvariante così in colonna che abbiamo
supporto per covarianza e
contravarianza ora ho un controller
che sta passando come parametro
repository ora in uno scenario tipico
quello che vorresti fare è che potresti creare
questo come una proprietà e poi fare qualcosa
come il repository va bene iniettare
questa dipendenza qui non è un
proprietà non posso accedere al repository
perché non è solo il parametro
all’immagine per il costruttore che puoi
accedervi in ​​un blocco costruttore così qui
posso accedere al repository ma non nel
classe stessa, ma ho aggiunto questa linea
qui che dice cliente repository di
repository che fondamentalmente mi sta dicendo
che questa funzionalità del
repository è delegato al
classe di repository in cui è stata inoltrata
efficacemente ciò che si traduce in
che ho accesso ai metodi di
questa interfaccia senza dover avere un
proprietà privata per il prefisso e l’uso
così posso solo ottenere ID e giusto
accedere a qualsiasi parametro passato
tutto ciò che è delegato puoi avere
più di un delegato ora la domanda
potrebbe sorgere che se ne avessi cinque
Delega come faccio a sapere quale metodo
appartiene a quale parametro è
essere passato in risposta a cui io
direi investire in un buon IDE o migliore
ma non lasciarti passare
cinque parametri giusti se tu se il tuo
classe sai se ti stai iniettando
più di un paio di dipendenze che
è una classe fortemente vincolata fortemente tipizzata
lo sai che è forte è strettamente
legato è strettamente accoppiato giusto perché
quella classe deve essere consapevole di troppe cose
le cose che stanno succedendo sono
orchestrare troppe cose quindi c’è
probabilmente un livello di astrazione o
qualcos’altro mancante là proprio il
la soluzione non sta passando in una collezione
o solo io lo sto fissando è solo
ridisegnandolo un po ‘ora, se tu
hanno familiarità con Java si sa che
Java ha flussi
tutto ciò che vi ho mostrato fino fino a
ora è stata fondamentalmente una valutazione entusiasta
quindi sai quando faccio un filtro sta andando
elencare attraverso tutti gli elementi è
andando a valutare tutto ma anche noi
avere una valutazione pigra e inizialmente
Kotlin diresti come stream ma poi
java è venuto con flusso e poi noi
dovuto rinominarlo così abbiamo chiamato come
sequenza e questo ti permette di prendere qualsiasi
raccolta e fare una valutazione pigra se
non puoi farlo su una collezione tu
hanno anche la funzione di generazione di sequenze
come parte della libreria standard che
ti permette di creare fondamentalmente sequenze
ultimo con un codice un po ‘più complesso
ma non meno importante quanti di voi sono
familiare con Haskell o dati algebrici
tipi va bene così la nostra implementazione di
i tipi di dati algebrici sono dati algebrici
tipi fondamentalmente è un tipo che potrebbe essere
un tipo multiplo quindi ad esempio booleano
può essere vero o può essere un falso giusto così
il modo in cui lo facciamo in Colin è che usiamo il
modificatore sigillato a destra, quindi dico sigillato
classe e questo in pratica significa che qui
Ho un risultato di una pagina di classe e ha un
successo in sub class in un errore sub class
non appena aggiungo il sigillo ad esso significa
che non c’è mai mai andare a essere qualsiasi
altre classi ereditano ciò che significa
che potrei quindi fare del nostro esaustivo
conosci i controlli su qualcosa così
qui sto dicendo che il risultato della pagina sarà
sia l’ errore di successo intendo allora
perché dovrei voler fare questo perché
di nuovo porta a un po ‘più bello
codice quindi qui ho per esempio a
funzione ottiene la pagina che restituisce una pagina
risultato e dico se l’operazione è
successo restituire un tipo di successo se questo
è un errore restituire invece un errore di tipo
di avere un tipo di ritorno singolo che poi
Devo controllare se c’è una bandiera
errore se è un errore, allora devo sapere
guardando i documenti quale valore quale
i valori di ritorno sono in realtà contenenti
il messaggio di errore che sono solo in
caso di successo posso ora avere un tipo
restituire uno dei tipi multipli di ciò
potresti farlo ovviamente senza il
sigillato ma ciò che sta facendo il sigillato è
garantendoti l’eredità
chiuso solo con quelle classi che sono
sottoclassando questo è chiamato in 1.0 in
1.1 puoi effettivamente metterlo al di fuori di
la classe in modo da non aver bisogno di avere
quelle classi all’interno della classe che
significa che non devi fare riferimento
come risultato della pagina che successo puoi
basta indicarli come il solo successo
limitazione è che qualsiasi classe che
eredita dalla tua classe sigillata deve
essere nello stesso file ok
qualsiasi domanda si si simile a
sindacati discriminati sì bene come ho detto
in 1 punto 1 è ora possibile eliminare il
prefisso con il risultato della pagina in modo che
lo minimizza in qualche modo e il
l’altra cosa è qui è un problema che
se questa è una classe sigillata e se aggiungo
per esempio una classe un’altra qui giusta
che eredita dal risultato della pagina cosa
ti aspetteresti che quando fare lo farebbe
ti aspetti questo quando darti un
avvertimento che non è esaustivo lo fa
no e non su enum o su
questo e lo abbiamo fatto facendo su enum e
abbiamo un sacco di lamentele quindi uno dei
cose che stiamo guardando indietro
è al di fuori di tutto il concetto di
sigillato è potenzialmente e questo è giusto
qualcosa un’idea per favore non citarmi
su questo è lui dice che è lui lo sa
che sta registrando sta aggiungendo
parola chiave sigillata per vincere così essenzialmente
dicendo che questo quando è anche sigillato
va bene
giusto quindi fammi finire con un
un paio di diapositive altre cose
le persone stanno bene stiamo facendo l’ancora
è la libreria open source che se
stai facendo lo sviluppo di Android consente
tu a scrivere layout descrittivi senza
dovendo usare XML solo fondamentalmente statico
la lingua digitata è l’estensione Android
il compilatore viene fornito con un plug-in
capacità in modo che tu possa effettivamente cambiarne qualcuno
cose e cosa facciamo con Android
le estensioni sono se hai familiarità con
Sviluppo Android un sacco di volte
fare bene guardando la nostra vista del testo dell’ID
e poi lanciarlo con questo plug-in cosa
ti permetti di fare è in realtà
riferimento al tipo e una cosa che
stiamo anche per rilasciare presto è se
lo fai qualcuno che molla
così molla uno dei problemi che sorgono
gli sviluppatori hanno con Kotlin è che loro
Devo decorare tutto con aperto
pubblicheremo un plugin e
quando dico plugin non intendo solo per
IDE ma intendo per qualsiasi esperto di strumenti di costruzione
grattugia, lascia che sia possibile aggiungere annotazioni
certe classi che dicono che se loro
hanno questa annotazione di default sono
aperto che lo rende di nuovo più conciso
quando stai scrivendo lo stivale primavera
i buoni fan e lo stivale primaverile
hai già il supporto per Colin così tu
potrebbe generare i tuoi modelli usando
Cortland cobalto come ho già detto
è un sapore di Gradle che usa Kotlin in
definire builds spec è una libreria molto
testing framework che ho scritto
che è simile a Jasmine maka
se hai familiarità con JavaScript quelli
quadri e le co-rout di roadmap
stiamo praticamente implementando un generico
co-routine in modo in termini di una sincrono
programmazione che non diremo
abbiamo intenzione di andare con il forte c-
approccio di una sincronizzazione di peso o siamo
andando per andare con un non reattivo
estensioni e approccio o qualcosa di simile
che abbiamo implementato le co-routine
che poi forniamo una serie di
funzionalità pronte all’uso come parte di
la libreria standard
che il compilatore quindi trasforma in
macchine di stato giusto per poter usare a
peso singolo o è possibile utilizzare rendimento o
puoi usare tutto ciò che vuoi e non essere
associato a una classe dati di tipo specifico
le gerarchie scrivono alias decostruendo
riferimenti al metodo rilegato lambda
Proprietà delegate locali e Java 8 9
a cui siamo ancora impegnati
fornendo supporto per Java 6 ma se lo sei
targeting Java 8 o 9 miglioreremo in
termini di ottimizzazione del codice e determinati
funzionalità fornita come parte
della libreria standard e JavaScript
supporto e anche ora siamo partiti
nativo lint quindi non ci sarà preso a
nativo è una specie di primi stadi giusto
ora ma abbiamo già qualcosa in
il lavoro funziona i prossimi passi se lo sei
Interessato a chiamare Lang o provare a chiamare
Lang org che è un tipo in-browser di
IDE che ti permette di provare una serie di
coni senza dover scaricare o
installa qualsiasi cosa se vuoi scaricare
puoi farlo che sono anche disponibili
sui libri di Github ci sono in realtà io
pensane un altro in questo momento
chiamare gli sviluppatori Android e
dai miei colleghi che ora è finito
in termini di testo e dovrebbe essere
pubblicato presto ma è presto
programma di accesso
Ho appena finito 9 ore di questo è il mio
auto-promozione perdonami, ho finito
solo nove ore di Kotlin O’Reilly
corso che dovrebbe essere disponibile
a volte a novembre in safari e
community community molto attiva su slack
è solo ora che questa istantanea è stata scattata 4364
membri già e abbiamo forum
Twitter o anche se se inizi con
è venuto alla chiamata in gioco perché si
otterrà aiuto lì come sul nostro
forum quindi per riassumere cerchiamo di creare
un linguaggio molto pragmatico che ha a
molto semplice da imparare
interagisce con Java quindi fornisce a
adozione a basso rischio non devi
limitarlo ai test si può semplicemente mescolare e
abbinare le classi, infatti, se si utilizza
IntelliJ puoi prendere una classe Java e
tramite una tastiera, convertilo in
Codice Kotlin non è il massimo del
Ematic coddling code ma lo fa
sei un punto di partenza e ovviamente questo
è soggettivo ma viene da c-sharp
stando lontano da java, lo trovo
è divertente e questo è un po ‘
qualcosa come quando le persone mi dicono di te
sapere perché dovrei usare IntelliJ
eclissi Sono come provare se ti va bene
se lo trovi meglio per te per il tuo
esigenze
quindi ottimo se non lo fai e il nostro
impegno per Collin è che è qui
rimanere perché lo stiamo usando nel nostro
prodotti giusto così il modello di business
attorno a Kotlin c’è lo strumento JetBrains
non consultare o qualcosa del genere e
Mi limiterò a finire con questa ricerca
Colin ieri sera e poi speso il
mattina guardando le montagne di
boilerplate Java in studio Android vedo
cosa hanno fatto perché l’hanno fatto sì
questo è quasi un riassunto perché lo abbiamo fatto
grazie
tu

Please follow and like us: