当前位置: 首页 > 知识库问答 >
问题:

Intellij IDEA重新格式化scala代码

柴意智
2023-03-14

如果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)
    })
}

但是在重新格式化代码(< code>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)
    })
}

在intellij idea for scala lang中,什么是合适的代码风格规则,我应该设置它来覆盖默认行为并获得我想要的输出风格?

编辑

当多行会导致:

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个空格)

共有2个答案

景河
2023-03-14

我推荐你使用Scalariform,它是Scala的一个代码格式化程序。它可以作为一个库,一个独立的命令行工具,或者通过与各种编辑器和构建工具(如下所列)的集成来使用。

我们的计划是在人们需要的时候添加偏好和特性,所以如果Github没有按照你想要的方式格式化你的代码,请提出问题,我会看看我能做什么。

Scalariform是在麻省理工学院的许可下授权的。

如果您使用sbt,请将其添加到您的项目/plugins.sbt

addSbtPlugin(“com.typesafe.sbt” % “sbt-scalariform” % “1.3.0”)

这里是所有的信息,是在激活器模板中使用类型安全的信息,

鳞状软骨

https://github.com/sbt/sbt-scalariform

段坚
2023-03-14

您可能希望取消选择首选项菜单的Scala部分中的Wrapping and Braces选项卡中的方法声明参数部分中的Align multiline选项。您可能还希望将同一部分中的包装选项设置为Warp if long

为了随心所欲地获取选项卡,您需要在“选项卡和缩进”选项卡上将“继续缩进”设置为 4,将缩进设置为 2。

 类似资料:
  • 如果我运行“重新格式化代码”,PyCharm 会更改此行: 重新格式化代码后: 但这意味着新代码被破坏了。 有没有办法阻止PyCharm打破以上线路? 版本:PyCharm社区2018.2

  • 问题内容: 我有一些格式很差的HTML代码,我想重新格式化。是否有一个命令可以自动在Sublime Text 2中重新格式化HTML代码,使其看起来更好并且更易于阅读? 问题答案: 您不需要任何插件即可执行此操作。只需选择所有行(),然后从菜单中选择编辑→行→重新缩进。如果您的文件使用扩展名包含HTML 或的扩展名,则此方法有效。 如果您经常这样做,则可能会发现此键映射很有用: 如果未保存文件(例

  • 我执行了添加checkstyle的步骤 null

  • 好的,我已经在互联网上搜索了一下,试图弄清楚我必须在PhpStorm中更改哪一点才能让它停止这样做。 现在,当我在一些PHP上运行“重新格式化代码”时,它也决定为我优化导入。虽然通常我会说“哎呀,太好了”——在某些情况下,PhpStom并没有意识到它认为未使用的一些导入实际上已经使用过了。 注释作为代码等等。 请告诉我有人知道如何让PhpStom停止这样做。每当我自动格式化代码时,我都必须撤消对导

  • 操作步骤: 菜单栏: Code —> Reformat Code 右键菜单: Reformat Code 快捷键: Mac: option + command + L Windows\/Linux: Ctrl + Alt + L 配置格式化选项 通过快捷键(Mac): option + command + shift + L 打开配置对话框 自动缩进行 操作步骤: 菜单栏: Code —> Aut

  • Go 开发团队不想要 Go 语言像许多其它语言那样总是在为代码风格而引发无休止的争论,浪费大量宝贵的开发时间,因此他们制作了一个工具:go fmt(gofmt)。这个工具可以将你的源代码格式化成符合官方统一标准的风格,属于语法风格层面上的小型重构。遵循统一的代码风格是 Go 开发中无可撼动的铁律,因此你必须在编译或提交版本管理系统之前使用 gofmt 来格式化你的代码。 尽管这种做法也存在一些争论