begegnete ich folgend in Scala Code:Was bedeutet das genau in Scala?
class MyClass { ... val a = new A; import a._ }
Was genau val a = new A; import a._
bedeuten?
begegnete ich folgend in Scala Code:Was bedeutet das genau in Scala?
class MyClass { ... val a = new A; import a._ }
Was genau val a = new A; import a._
bedeuten?
Es importiert die Methoden und Variablen des Objekts. Wenn Sie also a.foo()
anrufen möchten, können Sie stattdessen einfach foo()
anrufen.
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.
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).
+1, weil du die _stable reference_ erwähnt hast –