我还是Scala和构建工具SBT的新手。在SBT的官方入门指南中,我遇到了以下build.sbt
的示例。
lazy val root = (project in file(".")).
settings(
name := "hello"
)
DSL看起来像某种脚本语言,但我仍然在努力去理解正在发生的事情。我的问题是:
file(".")
?它是否返回当前目录中的文件列表?project in file(".")
是for-in循环表达式吗?root
必须使用lazy
进行注释?感谢。
答案 0 :(得分:3)
什么是文件(“。”)?它是否返回当前文件列表 ?目录
"$source is compared to $compare :" | out-file $log -width 120
$comparison | out-file $log -width 120 -Append
会返回file(".")
类型,该类型是sbt.File
类型的别名which describes a file/directory。点指的是顶级项目,或当前文件/目录所在的相对路径:
java.io.File
语句项目(“。”)是否为for-in循环表达式?
没有。这是一个简单的方法调用,相当于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
。 Scala有一个名为"infix notation"的功能,它允许您在没有project.in(file("."))
为什么root必须用lazy注释?
它没有。 Scala中的.
将变量的分配推迟到有人第一次调用它时,而不是在构造函数初始化期间预先分配变量。