You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scalafmt配置:如何正确格式化长链?=>中缀运算符的类型声明

Scala 3 中?=>中缀运算符链的scalafmt格式化配置方案

针对你遇到的scalafmt挤压?=>运算符链的问题,可通过调整以下配置实现预期的换行对齐效果:

关键配置项调整

在项目根目录的.scalafmt.conf文件中添加/修改以下内容:

  1. 启用行首中缀运算符重写规则
    强制每个?=>运算符单独换行并置于行首,保留原有的链式结构:
rewrite.rules = [InfixOperatorAtStartOfLine]
  1. 细化中缀运算符对齐策略
    配合已启用的align.preset = more,指定对?=>的对齐规则,确保每行运算符对齐:
align.infixOperator = more
# 可选:精确指定需要对齐的运算符,避免影响其他中缀符号
align.infixOperator.targets = ["?=>"]
  1. 设置合理的单行长度阈值
    避免因单行长度限制导致运算符被强行挤压到一行:
maxColumn = 100 # 根据代码风格调整合适的列数

完整配置示例

runner.dialect = scala3
align.preset = more
rewrite.rules = [InfixOperatorAtStartOfLine]
align.infixOperator = more
maxColumn = 100

预期格式化效果

应用配置后,原类型声明会保持你想要的换行对齐格式:

type AwesomeType[F[_], X, Y] =
  Foo[F]    ?=>
  Bar[F, X] ?=>
  Baz[F, X] ?=>
  Waffle[X] ?=>
  F[Y]

注意:确保使用的scalafmt 3.6.1版本支持上述配置,InfixOperatorAtStartOfLine规则在Scala 3方言下可正常工作。

内容的提问来源于stack exchange,提问作者Andrey Tyukin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:45:31