所以例如你不能写:
a := 3
b := 4
Run Code Online (Sandbox Code Playgroud)
你必须将它们分开,如下所示:
a := 3
b := 4
Run Code Online (Sandbox Code Playgroud)
我想不出具有类似要求的其他文件格式.这对新人来说绝对令人惊讶.甚至一些长期的用户认为这是令人反感的.
根据我的经验,在改变之前,这是关于sbt的最常见问题.
Set*_*sue 23
截至sbt 0.13.7,不再需要空白行.所以以下是现在的历史信息.
简短的回答是空行使文件机器可读和机器可写.
我们打开这个.
首先,请注意,设置使用多行是常见的,例如长Seq或包含代码的任务主体.
其次,请注意设置是表达式,而不是语句.所以sbt无法推断它们之间的分号.在Scala中,只能在语句之间推断分号.
因此需要空白行,以便sbt知道一个设置结束而下一个设置开始的位置.
从理论上讲,无论如何,它能否确定?也许.2011年,Mark Harrah(sbt的创始人)写道:
使用编译器分离表达式可能会在某些时候发生,但我尽量避免在可能的情况下引入启动编译器的开销
事实证明,这里的一个关键问题是性能.Scala编译器非常慢.您可能接下来想知道,无论如何都需要编译设置,不是吗?是的,但是很少有人意识到为了提高性能,.sbt文件中的每个设置都是单独编译的,并且编译的结果被缓存,即使在sbt的调用之间也是如此.因此,如果您编辑构建并更改一个设置,则只重新编译该设置.
上面,我说.sbt文件是机器可写的,而不仅仅是机器可读的.您可以动态更改设置,然后使用保存更改session save.2014年,Jason Zaugg(Typesafe)写道:
[空行]的决定最初来自build.sbt应该是机器可编辑的约束.在SBT会话中,您可以运行
set foo := bar,并将持久保存到文件中.在实践中,人们不倾向于使用这个功能,我们可能会重新审视这个决定[...]
有关空行,以及如何这可能在未来改变背后的设计考虑事项进一步详情,请参阅本的书面记录由Josh Suereth(也是类型安全).
| 归档时间: |
|
| 查看次数: |
2614 次 |
| 最近记录: |