Scala-Tutorial

Lesen(12953) Updatezeit(2022-04-19)

Scala-Tutorial Scala ist eine Multiparadigmen-Programmiersprache, die darauf ausgelegt ist, verschiedene Funktionen der objektorientierten Programmierung und der funktionalen Programmierung zu integrieren.


Scala ist eine Multiparadigmen-Programmiersprache, eine Java-ähnliche Programmiersprache. Sie wurde ursprünglich entwickelt, um eine skalierbare Sprache zu implementieren und verschiedene Funktionen der objektorientierten Programmierung und der funktionalen Programmierung zu integrieren.

Das erste Scala-Programm

Das Folgende ist ein typisches Hello World-Programm, das in Scala geschrieben wurde:

Beispiel

 object HelloWorld extends App {
   println("Hello, world!")
 }

Instanz ausführen»

Klicken Sie auf „Instanz ausführen“ Klicken Sie auf die Schaltfläche, um Online-Instanzen

oder

Instanzen

object HelloWorld {
   def main(args: Array[String]) {
     println("Hello, world!")
   }
 }

Instanz ausführen»< anzuzeigen 🎜>Schaltfläche „Instanz ausführen“, um Online-Instanzen anzuzeigen

Beachten Sie, dass es der Hello World-Anwendung von Java ähnelt. Ein wesentlicher Unterschied besteht darin, dass die Scala-Version des Hello World-Programms die Hauptmethode nicht über das Schlüsselwort static als statische Methode markiert, sondern das Schlüsselwort object zum Erstellen eines Singletons verwendet.

Angenommen, das Programm ist als HelloWorld.scala-Datei gespeichert, kann es dann über die folgende Befehlszeile kompiliert werden:

> scalac HelloWorld.scala

Zum Ausführen:

> scala -classpath . HelloWorld

Das ist das Gleiche wie das Kompilieren und Ausführen von Java. Ist das Programm „Hello World“ nicht sehr ähnlich? Tatsächlich entspricht das Kompilierungs- und Ausführungsmodell von Scala dem von Java und ist daher auch mit den Build-Tools von Java wie Ant kompatibel.

Sie können das Programm auch direkt mit dem Scala-Interpreter ausführen, indem Sie die Option -i ( Code aus Datei laden) und Option -e (um zusätzlichen Code auszuführen, müssen Sie tatsächlich die Methode des HelloWorld-Objekts ausführen):

> scala -i HelloWorld.scala -e 'HelloWorld.main(null)'

Tipp: Unsere Scala-Tutorials werden helfen Ihnen, Scala vom Anfänger bis zum Fortgeschrittenen zu lernen. Wenn Sie Fragen haben, besuchen Sie bitte die chinesische PHP-Website Scala Community , um Ihre Fragen zu stellen, und begeisterte Internetnutzer werden sie für Sie beantworten.

Scala-Funktionen

Unterstützte Programmierparadigmen

  • Objektorientierte Funktionen

Scala ist Eine rein objektorientierte Sprache, in der jeder Wert ein Objekt ist. Der Datentyp und das Verhalten eines Objekts werden durch Klassen und Merkmale beschrieben. Es gibt zwei Möglichkeiten, den Klassenabstraktionsmechanismus zu erweitern. Ein Ansatz ist die Vererbung von Unterklassen und der andere Ansatz ist ein flexibler Mixin-Mechanismus. Mit diesen beiden Ansätzen können die Probleme der Mehrfachvererbung vermieden werden.

  • Funktionale Programmierung

Scala ist ebenfalls eine funktionale Sprache und ihre Funktionen können auch als Werte verwendet werden. Scala bietet eine schlanke Syntax zum Definieren anonymer Funktionen, unterstützt Funktionen höherer Ordnung, ermöglicht die Verschachtelung mehrerer Funktionsebenen und unterstützt Currying. Die Fallklassen von Scala und ihr integrierter Mustervergleich entsprechen den algebraischen Typen, die üblicherweise in funktionalen Programmiersprachen verwendet werden.

Darüber hinaus können Programmierer den Mustervergleich von Scala nutzen, um Code zu schreiben, der regulären Ausdrücken ähnelt, um XML-Daten zu verarbeiten. In diesen Situationen sind Listenverständnisfunktionen beim Schreiben formelhafter Abfragen nützlich.

Da die JVM die Tail-Rekursion nicht unterstützt, kann Scala die Tail-Rekursionsoptimierung nicht vollständig unterstützen. Der Scala-Compiler kann jedoch einige einfache Endrekursionen in Schleifen optimieren.

Der folgende Code implementiert den Schnellsortierungsalgorithmus in einem funktionalen Stil, der mit dem Erlang-Schnellsortierungsbeispiel verglichen werden kann:

def qsort(list: List[Int]): List[Int] = list match {
  case Nil => Nil
  case pivot :: tail =>
    val(smaller, rest) = tail.partition(_ < pivot)
    qsort(smaller) ::: pivot :: qsort(rest)
}

Statischer Typ

Scala verfügt über ein Typsystem , durch Überprüfungen der Kompilierungszeit, um Codesicherheit und -konsistenz sicherzustellen. Das Typsystem unterstützt insbesondere die folgenden Funktionen:

  • generische Kategorien,

  • Kovarianz und Kontravarianz,

  • Annotation,

  • Ober- und Untergrenze von Typparametern,

  • Kategorien und abstrakte Typen als Objektmitglieder behandeln,

  • Zusammengesetzter Typ,

  • Geben Sie den Typ explizit an, wenn Sie sich selbst referenzieren,

  • Ansicht,

  • Polymorphe Methoden.

Erweiterbarkeit

Scala ist so konzipiert, dass es der Tatsache Rechnung trägt, dass in der Praxis die domänenspezifische Anwendungsentwicklung oft domänenspezifische Spracherweiterungen erfordert. Scala bietet viele einzigartige Sprachmechanismen, die das einfache und nahtlose Hinzufügen neuer Sprachkonstrukte in Form von Bibliotheken ermöglichen:

  • Jede Methode kann als Präfix- oder Postfix-Operator verwendet werden,

  • kann automatisch Abschlüsse basierend auf dem erwarteten Typ erstellen.

Durch die Kombination der beiden oben genannten Funktionen können Sie neue Anweisungen definieren, ohne die Syntax zu erweitern oder Metaprogrammierungsfunktionen wie Makros zu verwenden.

Parallelität

Scala verwendet Actor als Parallelitätsmodell, eine threadartige Entität, die Nachrichten über Postfächer sendet und empfängt. Akteure können Threads wiederverwenden, sodass Millionen von Akteuren im Programm verwendet werden können, während Threads nur Tausende erstellen können. In Versionen nach 2.10 wird Akka als Standard-Actor-Implementierung verwendet. [20] Der folgende Code ist eine EchoServer-Implementierung im Actor-Modus

val echoServer = actor(new Act {
  become {
    case msg => println("echo " + msg)
  }
})
echoServer ! "hi"

Der Actor-Modus kann die gleichzeitige Programmierung vereinfachen und die Fähigkeiten von Multi-Core-CPUs nutzen.

Was dieses Scala-Tutorial-Handbuch behandelt

Dieses Scala-Tutorial behandelt alle grundlegenden und fortgeschrittenen Scala-Kenntnisse, einschließlich grundlegender Scala-Syntax, Scala-Datentypen, Scala-Variablen, Scala-Operatoren, Scala-Funktionen, Einführung in alles Grundlegende und fortgeschrittene Kenntnisse von Scala wie Scala-Strings, Scala-Klassen und -Objekte usw.

Tipps: Jedes Kapitel dieses Tutorials enthält viele Scala-Beispiele. Sie können direkt auf die Schaltfläche „Beispiel ausführen“ klicken, um die Ergebnisse online anzuzeigen. Diese Beispiele helfen Ihnen, Scala besser zu verstehen und zu verwenden.


Neuestes Kapitel


Scala 文件 I/O 2016-10-18
Scala 提取器(Extractor) 2016-10-18
Scala 异常处理 2016-10-18
Scala 正则表达式 2016-10-18
Scala 模式匹配 2016-10-18
Scala Trait(特征) 2016-10-18
Scala 类和对象 2016-10-18
Scala Iterator(迭代器) 2016-10-18