Scala Language Tutorial
Erste Schritte mit Scala Language
Suche…
Bemerkungen
Scala ist eine moderne Multi-Paradigma-Programmiersprache, die gängige Programmiermuster auf prägnante, elegante und typsichere Weise ausdrückt. Es integriert nahtlos Merkmale objektorientierter und funktionaler Sprachen.
Die meisten Beispiele erfordern eine funktionierende Scala-Installation. Dies ist die Scala-Installationsseite. Dies ist das Beispiel für das Einrichten von Scala . scalafiddle.net ist eine gute Ressource, um kleine Codebeispiele über das Web auszuführen.
Versionen
| Ausführung | Veröffentlichungsdatum |
|---|---|
| 2.10.1 | 2013-03-13 |
| 2.10.2 | 2013-06-06 |
| 2.10.3 | 2013-10-01 |
| 2.10.4 | 2014-03-24 |
| 2.10.5 | 2015-03-05 |
| 2.10.6 | 2015-09-18 |
| 2.11.0 | 2014-04-21 |
| 2.11.1 | 2014-05-21 |
| 2.11.2 | 2014-07-24 |
| 2.11.4 | 2014-10-30 |
| 2.11.5 | 2014-01-14 |
| 2.11.6 | 2015-03-05 |
| 2.11.7 | 2015-06-23 |
| 2.11.8 | 2016-03-08 |
| 2.11.11 | 2017-04-19 |
| 2.12.0 | 2016-11-03 |
| 2.12.1 | 2016-12-06 |
| 2.12.2 | 2017-04-19 |
Hallo Welt durch Definieren einer "Hauptmethode"
Fügen Sie diesen Code in eine Datei mit dem Namen HelloWorld.scala :
object Hello {
def main(args: Array[String]): Unit = {
println("Hello World!")
}
}
So kompilieren Sie es in einen Bytecode, der von der JVM ausgeführt werden kann:
$ scalac HelloWorld.scala
Um es auszuführen:
$ scala Hello
Wenn die Scala-Laufzeit das Programm lädt, sucht es mit einer main nach einem Objekt namens Hello . Die main ist der Programmeintrittspunkt und wird ausgeführt.
Beachten Sie, dass Scala im Gegensatz zu Java keine Benennung von Objekten oder Klassen nach der Datei verlangt, in der sie enthalten sind. Stattdessen verweist der im Befehl scala Hello Parameter Hello auf das zu scala Hello Objekt, das die main Hauptmethode enthält. Es ist durchaus möglich, mehrere Objekte mit Hauptmethoden in derselben .scala Datei zu haben.
Das args Array enthält ggf. die Befehlszeilenargumente, die dem Programm übergeben werden. Zum Beispiel können wir das Programm folgendermaßen ändern:
object HelloWorld {
def main(args: Array[String]): Unit = {
println("Hello World!")
for {
arg <- args
} println(s"Arg=$arg")
}
}
Kompiliere es:
$ scalac HelloWorld.scala
Und dann führe es aus:
$ scala HelloWorld 1 2 3
Hello World!
Arg=1
Arg=2
Arg=3
Hallo Welt durch Erweiterung der App
object HelloWorld extends App {
println("Hello, world!")
}
Durch die Erweiterung der App Eigenschaft können Sie die Definition einer expliziten main vermeiden. Der gesamte Körper des HelloWorld Objekts wird als "Hauptmethode" behandelt.
Verzögerte Initialisierung
Laut der offiziellen Dokumentation verwendet
Appeine Funktion namens " Verzögerte Initialisierung" . Dies bedeutet, dass die Objektfelder nach dem Aufruf der Hauptmethode initialisiert werden.
Verzögerte Initialisierung
Laut der offiziellen Dokumentation verwendet
Appeine Funktion namens " Verzögerte Initialisierung" . Dies bedeutet, dass die Objektfelder nach dem Aufruf der Hauptmethode initialisiert werden.
DelayedInitist jetzt für die allgemeine Verwendung veraltet , wird jedoch als Sonderfall fürAppweiterhin unterstützt . Der Support wird fortgesetzt, bis eine Ersatzfunktion festgelegt und implementiert ist.
Um auf Befehlszeilenargumente zuzugreifen, wenn Sie App , verwenden Sie this.args
object HelloWorld extends App {
println("Hello World!")
for {
arg <- this.args
} println(s"Arg=$arg")
}
Bei der Verwendung von App , wird der Körper des Objekts als die ausgeführt wird main gibt es keine Notwendigkeit , außer Kraft zu setzen main .
Hallo Welt als Drehbuch
Scala kann als Skriptsprache verwendet werden. Um dies zu demonstrieren, erstellen Sie HelloWorld.scala mit dem folgenden Inhalt:
println("Hello")
Führen Sie es mit dem Befehlszeileninterpreter aus (das $ ist die Befehlszeilenaufforderung):
$ scala HelloWorld.scala
Hello
Wenn Sie .scala auslassen (z. B. wenn Sie einfach scala HelloWorld .scala eingegeben haben), sucht der Läufer nach einer kompilierten .class Datei mit Bytecode, anstatt das Skript zu kompilieren und dann auszuführen.
Hinweis: Wenn Scala als Skriptsprache verwendet wird, kann kein Paket definiert werden.
In Betriebssystemen, die bash oder ähnliche Shell-Terminals verwenden, können Scala-Skripts unter Verwendung einer 'Shell-Präambel' ausgeführt werden. Erstellen Sie eine Datei mit dem Namen HelloWorld.sh und geben Sie Folgendes als Inhalt ein:
#!/bin/sh
exec scala "$0" "$@"
!#
println("Hello")
Die Teile zwischen #! und !# ist die 'Shell-Präambel' und wird als Bash-Skript interpretiert. Der Rest ist Scala.
Nachdem Sie die obige Datei gespeichert haben, müssen Sie ihr die Berechtigung "ausführbar" erteilen. In der Shell können Sie Folgendes tun:
$ chmod a+x HelloWorld.sh
(Beachten Sie, dass dies allen Benutzern die Berechtigung gibt: Lesen Sie mehr über chmod , um zu erfahren, wie Sie es für spezifischere Benutzergruppen festlegen.)
Jetzt können Sie das Skript folgendermaßen ausführen:
$ ./HelloWorld.sh
Verwenden der Scala REPL
Wenn Sie scala in einem Terminal ohne zusätzliche Parameter ausführen, wird ein REPL -Interpreter (Read-Eval-Print Loop) geöffnet:
nford:~ $ scala
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_66).
Type in expressions for evaluation. Or try :help.
scala>
Mit REPL können Sie Scala auf einem Arbeitsblatt ausführen: Der Ausführungskontext bleibt erhalten und Sie können Befehle manuell ausprobieren, ohne ein gesamtes Programm erstellen zu müssen. Wenn Sie beispielsweise val poem = "As halcyons we shall be" würde dies folgendermaßen aussehen:
scala> val poem = "As halcyons we shall be"
poem: String = As halcyons we shall be
Jetzt können wir unseren val drucken:
scala> print(poem)
As halcyons we shall be
Beachten Sie, dass val unveränderlich ist und nicht überschrieben werden kann:
scala> poem = "Brooding on the open sea"
<console>:12: error: reassignment to val
poem = "Brooding on the open sea"
In der REPL können Sie jedoch einen val neu definieren (der zu einem Fehler in einem normalen Scala-Programm führen würde, wenn er im gleichen Umfang ausgeführt würde):
scala> val poem = "Brooding on the open sea"
poem: String = Brooding on the open sea
Für den Rest Ihrer REPL-Sitzung spiegelt diese neu definierte Variable die zuvor definierte Variable. REPLs sind hilfreich, um schnell zu sehen, wie Objekte oder anderer Code funktionieren. Alle Funktionen von Scala sind verfügbar: Sie können Funktionen, Klassen, Methoden usw. definieren.