2012-05-10 9 views

Antwort

14

Es importiert die Methoden und Variablen des Objekts. Wenn Sie also a.foo() anrufen möchten, können Sie stattdessen einfach foo() anrufen.

9

Dies bedeutet, dass alle Methoden und Variablen des a Objekts vom Typ A jetzt in diesem Block (Scope) verfügbar sind, ohne explizit a zu erwähnen. Also, wenn A eine bar() Methode hat, kann man jetzt sagen:

bar() 

statt

a.bar() 

aber nur im Rahmen wo import definiert ist.

6

Lassen Sie uns das erklären, mit etwas sollten Sie vertraut sein:

println("Hello world") 

Die Frage ist: Warum funktioniert das? Es gibt kein Objekt namens println mit einer apply-Methode, was die übliche Erklärung für Code ist, der so aussieht. Nun, wie es geschieht, der obige Code ist dies wirklich tun:

Predef.println("Hello world") 

Mit anderen Worten, println ist eine Methode für das Objekt scala.Predef. Also, wie kannst du es wie oben benutzen? Nun, wie folgt aus:

Importieren Sie den Inhalt eine stabile Referenz (dh kein var oder ein def) seine Methoden zur Verfügung stellen, ohne sie mit reference. Präfix zu haben.

Es macht auch keine implicits Inneres verfügbar definiert, das ist, wie die impliziten Konvertierungen innerhalb scala.Predef definiert als auch zur Verfügung gestellt werden - Scala importiert die Inhalte java.lang, scala und scala.Predef (in dieser Reihenfolge, so dass die letztere Überschreibung die früheren).

+0

+1, weil du die _stable reference_ erwähnt hast –