我对 Scala 和构建工具 SBT 还是个新手。在SBT的官方入门指南中,我遇到了以下build.sbt
的例子。
lazy val root = (project in file(".")).
settings(
name := "hello"
)
DSL 看起来像是某种脚本语言,但我仍在努力理解发生了什么。我的问题是:
- 什么是
file(".")
?它是否返回当前目录中的文件列表? - 语句
project in file(".")
是 for-in 循环表达式吗? - 为什么
root
要注解lazy
?
谢谢。
最佳答案
What is file(".")? Does it return a list of files in current directory?
file(".")
返回一个 sbt.File
类型,它是 java.io.File
类型的别名, which describes a file/directory .点指的是顶级项目,或者当前文件/目录所在的相对路径:
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
Is the statement project in file(".") a for-in loop expression?
没有。这是一个简单的方法调用,相当于 project.in(file("."))
。 Scala 有一个特性叫做 "infix notation" ,它允许您在没有 .
Why does root has to be annotated with lazy?
它没有它。 Scala 中的 lazy
将变量的分配推迟到有人第一次调用它时,而不是在构造函数初始化期间预先分配它。
关于scala - 如何解释这个 SBT DSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36648185/