Latest web development tutorials

Scala grundlegende Grammatik

Wenn Sie ein Java-Programmierer vor sind, und die Grundlagen der Java-Sprache zu lernen, so dass Sie die grundlegende Grammatik Scala schnell lernen.

Scala und Java ist der größte Unterschied ist: Scala Semikolon am Ende der Anweisung, ist optional.

Wir können von Scala-Programm denken, ist eine Sammlung von Objekten, die jedem Methodenaufruf zu Messaging implementieren. Als nächstes kommen wir die Klasse zu verstehen, das Konzept der Objekte, Methoden, Instanzvariablen:

  • Objekte - Objekte haben Eigenschaften und Verhaltensweisen.Zum Beispiel: eine hündisch Attribute: Farbe, Name, Verhalten: Anruf, laufen, essen und so weiter. Das Objekt ist eine Instanz einer Klasse.

  • Klasse - Klasse ist ein abstraktes Objekt, und das Objekt eine bestimmte Instanz einer Klasse.

  • Methode - das Verfahren in dem Basisrechtsakt kann eine Klasse mehrere Methoden enthalten.

  • Fields - Jedes Objekt seinen eigenen einzigartigen Satz von Instanzvariablen, nämlich Felder aus .Eigenschaften des Objekts durch die Feldzuordnung angelegt werden.


Die erste Scala-Programm

Dialogprogrammierung

Interaktive Programmierung müssen nicht eine Skriptdatei erstellen, können Sie den folgenden Befehl aufrufen:

$ scala
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31).
Type in expressions to have them evaluated.
Type :help for more information.

scala> 1 + 1
res0: Int = 2

scala> println("Hello World!")
Hello World!

scala> 

Script Form

Wir können auch eine HelloWorld.scala Datei erstellen Code, HelloWorld.scala Code auszuführen, wie folgt:

object HelloWorld {
   /* 这是我的第一个 Scala 程序
    * 以下程序将输出'Hello World!' 
    */
   def main(args: Array[String]) {
      println("Hello, world!") // 输出 Hello World
   }
}

Als nächstes verwenden scalac Befehl wir es zu kompilieren:

$ scalac HelloWorld.scala 
$ ls
HelloWorld$.class	HelloWorld.scala
HelloWorld.class	

Nach dem Kompilieren, können wir sehen, die unter HelloWorld.class Datei erstellt Verzeichnisse, die auf Java Virtual Machine (JVM) auf ausführen können.

Nach dem Kompilieren, können wir den folgenden Befehl verwenden, um das Programm auszuführen:

$ scala HelloWorld
Hello, world!
Online Beispiele >>

Die grundlegende Syntax

Scala grundlegende Syntax ist Folgendes zu beachten:

  • Case-sensitive - Scala ist case-sensitive, welches Logo bedeutet hallo hallo und haben unterschiedliche Bedeutungen in Scala.

  • Klassenname - für alle Klassennamen Anfangsbuchstaben sollte aktiviert werden.

    Wenn Sie ein paar Worte zu benutzen müssen einen Klassennamen zu bilden, aktiviert den ersten Buchstaben jedes Wortes.

    Beispiel: Klasse MyFirstScalaClass

  • Methodenname - der erste Buchstabe aller Methoden klein geschriebene Namen.

    Wenn mehrere Wörter verwendet werden, den Namen der Methode darstellen, sollte die ersten Buchstaben jedes Wortes groß geschrieben werden.

    Beispiel: def myMethodName ()

  • Dateiname - der Name der Programmdatei genau sollte den Namen des Objekts entsprechen.

    Wenn Sie eine Datei speichern, sollte es den Objektnamen speichern zu verwenden (nicht vergessen, Scala ist case-sensitive) und ".scala" Dateierweiterung anhängen. (Wenn die Dateinamen und Objektnamen nicht übereinstimmen, wird das Programm nicht kompilieren).

    Beispiel: Nehmen wir an, "Hello World" ist der Name des Objekts. Dann sollten Sie die Datei als "HelloWorld.scala gespeichert werden"

  • def main (args: Array [String ]) - Scala - Programm von main () -Methode beginnt die Verarbeitung, die ein obligatorischer Bestandteil jedes Programms Eintrag Scala - Programm.


Identifiers

Scala können zwei Formen von Identifikatoren, digitale Zeichen und Symbole verwenden.

Alphanumeric Verwendung mit einem Buchstaben beginnen oder unterstreichen kann durch den Buchstaben oder einer Zahl gefolgt werden, ein Symbol "$" in Scala wird auch als Buchstaben gesehen. Um jedoch die Kennung verwendet, die Anwendung auf "$" am Anfang des Identifizierers reserviert Scala Compiler sollte vermieden Konflikt mit dem "$" Start-Kennung zu vermeiden.

Scala und Java-Namenskonvention eine ähnliche Namensgebung Kamel, das erste Zeichen Klein, wie toString verwenden. Das erste Zeichen Klassennamen oder Großbuchstaben. Darüber hinaus sollte es vermieden werden, um das Ende des Bezeichners zu unterstreichen Kollisionen zu vermeiden. Symbol-Identifizierer umfasst ein oder mehrere Symbole, wie +?,:, Etc., wie zB:

+ ++ ::: < ?> :->

Es wird die maskierte Kennung, wenn Scala interne Implementierung, wie verwenden: -> Verwenden $ größere Kolon $ minus $, um das Symbol zu repräsentieren. Also, wenn Sie Java-Code zugreifen müssen: -> Methode, müssen Sie Scala internen Namen $ Kolon $ minus $ größer zu verwenden.

Gemischte alphanumerische Kennung aus der Kennung später von einem oder mehreren Symbolen gefolgt, wie die Scala unary_ + Name + Methode für die interne Implementierungszeit. Wörtliche Kennung für die Zeichenfolge "definiert, für example` x`` yield`.

Sie können jede gültige Scala Kennung zwischen "verwenden, wird Scala als Scala Kennung interpretiert werden, eine typische Anwendung für das Gewinde des Zinsmethode, in Scala nicht Thread.yield () verwenden, da die Ausbeute von Scala Schlüsselwörter, müssen Sie Thread.`yield` () verwenden, diese Methode zu verwenden.


Scala Schlüsselwörter

In der folgenden Tabelle sind die scala Schlüsselwörter reserviert, wir können nicht die folgenden Schlüsselwörter als Variablen verwenden:

Zusammenfassung Fall Fang Klasse
def tun sonst erstreckt
falsch Finale schließlich für
forsome wenn implizit Import
faul Spiel neu nichtig
Objekt Überschreibung Paket privat
geschützt Rückkehr verschlossen super
diese werfen Zug versuchen
wahr Typ val var
während mit Ausbeute
- : = =>
<- <: <% >:
# @

Scala Kommentar

Scala ist ähnlich wie viele Java einzeilige Kommentare unterstützt. Multi-line Kommentare können verschachtelt werden, sondern muss richtig verschachtelt werden, einen Kommentar, der mit einem Symbol beginnt entsprechende Symbol zu beenden. NOTE Scala Compiler ignoriert werden, Beispiele sind wie folgt:

object HelloWorld {
   /* 这是一个 Scala 程序
    * 这是一行注释
    * 这里演示了多行注释
    */
   def main(args: Array[String]) {
      // 输出 Hello World
      // 这是一个单行注释
      println("Hello, world!") 
   }
}

Leerzeilen und Leerzeichen

Nur eine Zeile mit einem Leerzeichen oder Kommentare, werden Sie denken Scala es sich um eine leere Zeile ist, sie es ignorieren. Noten können Leerzeichen oder Kommentare zu spalten sein.


Newline

Scala ist eine zeilenorientierte Sprache, die Anweisung mit einem Semikolon (;) Ende oder Zeilenumbrüche. Scala-Programm, das Semikolon am Ende der Anweisung ist in der Regel optional. Wenn Sie bereit sind, ein zu geben, aber wenn es nur eine Zeile in der Anweisung oder nicht schreiben ist. Auf der anderen Seite, wenn Sie mehrere Anweisungen in einer Zeile schreiben, so ist das Semikolon erforderlich. Z.B.

val s = "本教程"; println(s)

Scala-Paket

Individuelle Pakete

Scala ist das Schlüsselwort Paket Paket definiert verwenden, in Scala Code ein Paket auf zwei Arten zu definieren:

Die erste Methode, und Java, wie es in der Dateikopf den Paketnamen definiert, folgen dieser Methode alle Codes in der Zeitung platziert werden. Zum Beispiel:

package com.w3big
class HelloWorld

Die zweite Methode ist etwas ähnlich wie C #, wie zB:

package com.w3big {
  class HelloWorld 
}

Die zweite Methode, können Sie mehrere Pakete in einer Datei definieren.

Zitat

Scala mit Import Stichwort Referenzpaket.

import java.awt.Color  // 引入Color
 
import java.awt._  // 引入包内所有成员
 
def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent
  ...  // 因为引入了java.awt,所以可以省去前面的部分
}

Import-Anweisungen können überall, nicht nur an der Spitze der Datei angezeigt. Import ergibt sich aus bis zum Ende des Anweisungsblocks erstreckt. Dies kann erheblich die Wahrscheinlichkeit von Namenskonflikte zu reduzieren.

Wenn Sie ein Paket aus mehreren Mitgliedern einführen wollen, können Sie den Selektor (Picker) verwenden:

import java.awt.{Color, Font}
 
// 重命名成员
import java.util.{HashMap => JavaHashMap}
 
// 隐藏成员
import java.util.{HashMap => _, _} // 引入了util包的所有成员,但是HashMap被隐藏了

Hinweis: In derStandardeinstellung Scala immer eingeführt java.lang._, scala._ und Predef._, Hier können Sie auch erklären , warum der scala Kopf des Pakets, bei der Verwendung des scala weggelassen.