2016-04-15 15 views
3

Ich bin noch neu bei Scala und dem Build-Tool SBT. In der offiziellen Einführung für SBT stieß ich auf das folgende Beispiel build.sbt.Wie interpretiere ich dieses SBT DSL?

lazy val root = (project in file(".")). 
    settings(
    name := "hello" 
) 

Der DSL sieht aus wie eine Art Skriptsprache, aber ich bin immer noch kämpfen, zu verstehen, was los ist. Meine Fragen sind:

  1. Was file(".") ist? Gibt es eine Liste von Dateien im aktuellen Verzeichnis zurück?
  2. Ist die Anweisung project in file(".") ein For-In-Loop-Ausdruck?
  3. Warum muss root mit lazy kommentiert werden?

Danke.

Antwort

3

Was ist Datei (".")? Gibt es eine Liste der Dateien im aktuellen Verzeichnis zurück?

file(".") gibt einen sbt.File-Typen, die ein Alias ​​für den java.io.File Typen ist, which describes a file/directory. Der Punkt bezieht sich auf den Top-Level-Projekt oder den relativen Pfad zu dem die aktuelle Datei/Verzeichnis befindet: („“)

scala> import java.io._ 
import java.io._ 

scala> val f = new File(".") 
f: java.io.File = . 

scala> f.getAbsolutePath 
res0: String = C:\Users\MyUser\. 

scala> f.isDirectory 
res1: Boolean = true 

ist die Aussage in Projekt Datei eine for-Schleife in Ausdruck?

Nein. Es ist ein einfacher Methodenaufruf, der project.in(file(".")) entspricht. Scala verfügt über eine Funktion "infix notation" genannt, mit dem Sie ein Verfahren zur Herstellung arity 0 oder 1 ohne die .

aufrufen können Warum hat Wurzel mit faul kommentierten werden?

Es muss nicht sein. lazy in Scala verschiebt die Zuweisung einer Variablen zum ersten Mal, wenn jemand sie aufruft, anstatt sie während der Initialisierung des Konstruktors vorher zuzuweisen.

Verwandte Themen