Kotlin Tutorial
Iniziare con Kotlin
Ricerca…
Osservazioni
Kotlin è un linguaggio di programmazione orientato agli oggetti con funzionalità statiche sviluppato da JetBrains che si rivolge principalmente alla JVM. Kotlin è stato sviluppato con l'obiettivo di essere veloce da compilare, retrocompatibile, molto sicuro da usare e al 100% interoperabile con Java. Kotlin è anche sviluppato con l'obiettivo di fornire molte delle funzionalità richieste dagli sviluppatori Java. Il compilatore standard di Kotlin consente di compilare sia in bytecode Java per JVM che in JavaScript.
Compilando Kotlin
Kotlin ha un plugin IDE standard per Eclipse e IntelliJ. Kotlin può anche essere compilato usando Maven , usando Ant e usando Gradle , o tramite la riga di comando .
Vale la pena notare in $ kotlinc Main.kt
restituirà un file di classe java, in questo caso MainKt.class
(Notare il Kt aggiunto al nome della classe). Tuttavia, se si dovesse eseguire il file di classe utilizzando $ java MainKt
java, verrà $ java MainKt
la seguente eccezione:
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
at MainKt.main(Main.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
Per eseguire il file di classe risultante utilizzando Java, è necessario includere il file jar runtime di Kotlin nel percorso di classe corrente.
java -cp .:/path/to/kotlin/runtime/jar/kotlin-runtime.jar MainKt
Versioni
Versione | Data di rilascio |
---|---|
1.0.0 | 2016/02/15 |
1.0.1 | 2016/03/16 |
1.0.2 | 2016/05/13 |
1.0.3 | 2016/06/30 |
1.0.4 | 2016/09/22 |
1.0.5 | 2016/11/08 |
1.0.6 | 2016/12/27 |
1.1.0 | 2017/03/01 |
1.1.1 | 2017/03/14 |
1.1.2 | 2017/04/25 |
1.1.3 | 2017/06/23 |
Ciao mondo
Tutti i programmi Kotlin iniziano dalla funzione main
. Ecco un esempio di un semplice programma Kotlin "Hello World":
package my.program
fun main(args: Array<String>) {
println("Hello, world!")
}
Inserisci il codice precedente in un file chiamato Main.kt
(questo nome file è interamente arbitrario)
Quando si esegue il targeting della JVM, la funzione verrà compilata come metodo statico in una classe con un nome derivato dal nome file. Nell'esempio sopra, la classe principale da eseguire sarebbe my.program.MainKt
.
Per modificare il nome della classe che contiene funzioni di primo livello per un determinato file, posiziona la seguente annotazione nella parte superiore del file sopra l'istruzione del pacchetto:
@file:JvmName("MyApp")
In questo esempio, la classe principale da eseguire sarebbe ora my.program.MyApp
.
Guarda anche:
- Funzioni a livello di pacchetto includendo
@JvmName
annotazione@JvmName
. - Annotazione degli obiettivi del sito di utilizzo
Ciao mondo usando una dichiarazione di oggetti
In alternativa è possibile utilizzare una dichiarazione oggetto che contiene la funzione principale per un programma Kotlin.
package my.program
object App {
@JvmStatic fun main(args: Array<String>) {
println("Hello World")
}
}
Il nome della classe che verrà eseguito è il nome del tuo oggetto, in questo caso è my.program.App
.
Il vantaggio di questo metodo su una funzione di primo livello è che il nome della classe per l'esecuzione è più evidente, ed eventuali altre funzioni che si aggiungono si ambito nella classe App
. Quindi hai anche un'istanza singleton di App
per memorizzare lo stato e fare altro lavoro.
Guarda anche:
- Metodi statici inclusa l'annotazione
@JvmStatic
Hello World utilizza un oggetto Companion
Simile all'utilizzo di una dichiarazione oggetto, è possibile definire la funzione main
di un programma Kotlin utilizzando un oggetto compagno di una classe.
package my.program
class App {
companion object {
@JvmStatic fun main(args: Array<String>) {
println("Hello World")
}
}
}
Il nome della classe che verrà eseguito è il nome della classe, in questo caso è my.program.App
.
Il vantaggio di questo metodo su una funzione di primo livello è che il nome della classe per l'esecuzione è più evidente, ed eventuali altre funzioni che si aggiungono si ambito nella classe App
. Questo è simile all'esempio della Object Declaration
, a parte il controllo sull'istanza di qualsiasi classe per svolgere ulteriori attività.
Una leggera variazione che istanzia la classe a fare il vero "ciao":
class App {
companion object {
@JvmStatic fun main(args: Array<String>) {
App().run()
}
}
fun run() {
println("Hello World")
}
}
Guarda anche:
- Metodi statici inclusa l'annotazione @JvmStatic
Metodi principali che utilizzano vararg
Tutti questi stili principali del metodo possono essere utilizzati anche con vararg :
package my.program
fun main(vararg args: String) {
println("Hello, world!")
}
Compilare ed eseguire il codice Kotlin nella riga di comando
Poiché java fornisce due diversi comandi per compilare ed eseguire il codice Java. Lo stesso di Kotlin fornisce anche comandi diversi.
javac
per compilare i file java. java
per eseguire file java.
Lo stesso di kotlinc
per compilare i file kotlin
per eseguire i file kotlin.
Lettura dell'input da Command Line
Gli argomenti passati dalla console possono essere ricevuti nel programma Kotlin e possono essere utilizzati come input. È possibile passare N (1 2 3 e così via) numeri di argomenti dal prompt dei comandi.
Un semplice esempio di un argomento da linea di comando in Kotlin.
fun main(args: Array<String>) {
println("Enter Two number")
var (a, b) = readLine()!!.split(' ') // !! this operator use for NPE(NullPointerException).
println("Max number is : ${maxNum(a.toInt(), b.toInt())}")
}
fun maxNum(a: Int, b: Int): Int {
var max = if (a > b) {
println("The value of a is $a");
a
} else {
println("The value of b is $b")
b
}
return max;
}
Qui, inserisci due numeri dalla riga di comando per trovare il numero massimo. Produzione :
Enter Two number
71 89 // Enter two number from command line
The value of b is 89
Max number is: 89
Per !! Operatore Si prega di verificare Null Safety .
Nota: l'esempio precedente viene compilato ed eseguito su Intellij.