如果我的Scala方法声明太长而不适合单行,我会将它分成几行,我的重新格式预期是:
protected def pruneFilterProject(
relation: LogicalRelation,
projectList: Seq[NamedExpression],
filterPredicates: Seq[Expression],
scanBuilder: (Array[String], Array[Filter]) => RDD[Row]) = {
pruneFilterProjectRaw(
relation,
projectList,
filterPredicates,
(requestedColumns, pushedFilters) => {
scanBuilder(requestedColumns.map(_.name).toArray, selectFilters(pushedFilters).toArray)
})
}
但是在重新格式化代码(control + alt + L
)之后,输出为:
protected def pruneFilterProject(
relation: LogicalRelation,
projectList: Seq[NamedExpression],
filterPredicates: Seq[Expression],
scanBuilder: (Array[String], Array[Filter]) => RDD[Row]) = {
pruneFilterProjectRaw(
relation,
projectList,
filterPredicates,
(requestedColumns, pushedFilters) => {
scanBuilder(requestedColumns.map(_.name).toArray, selectFilters(pushedFilters).toArray)
})
}
我应该设置为覆盖默认行为并获得我想要的输出样式,在scala lang的intellij idea中有哪些正确的代码样式规则?
修改
取消选择Align when multiline
会导致:
protected def pruneFilterProject(
relation: LogicalRelation,
projectList: Seq[NamedExpression],
filterPredicates: Seq[Expression],
scanBuilder: (Array[String], Array[Filter]) => RDD[Row]) = {
pruneFilterProjectRaw(
relation,
projectList,
filterPredicates,
(requestedColumns, pushedFilters) => {
scanBuilder(requestedColumns.map(_.name).toArray, selectFilters(pushedFilters).toArray)
})
}
参数和方法体将具有相同的缩进(2个空格),而不是所需的缩进: 带有两个缩进(4个空格)的参数列表,只有一个缩进(2个空格)的方法列表
答案 0 :(得分:2)
您可能想要取消选中Align when multiline
菜单Method declaration parameters
部分Wrapping and Braces
标签中Scala
部分中的Preferences
选项。您可能还想将同一部分中的换行选项设置为Warp if long
。
为了获得您想要的标签,您需要在Continuation indent
标签上将Indent
设置为4并将Tabs and Indents
设置为2。
答案 1 :(得分:2)
我建议你使用Scalariform它是Scala的代码格式化程序。它可以作为库,独立的命令行工具使用,也可以通过与各种编辑器和构建工具集成(如下所列)。
计划是在人们要求时添加首选项和功能,所以如果不按照您的喜好格式化代码,请提出Github问题,我会看到我能做什么做。
Scalariform根据麻省理工学院许可证获得许可。
如果你使用sbt, 将其添加到您的项目/ plugins.sbt
addSbtPlugin(“com.typesafe.sbt”%“sbt-scalariform”%“1.3.0”)
这里是所有信息,它是在他的激活模板中使用typesafe的那个,