在编辑器中使用 Scala 代码
最后修改时间:2023 年 9 月 5 日支持的 Scala 版本:Scala 2 和 Scala 3 (Dotty)
IntelliJ IDEA 允许您在 IntelliJ IDEA编辑器中工作时使用不同的 Scala 意图操作、将代码从 Java 转换为 Scala 以及使用不同的 Scala 模板。
Scala 中的字符串
您可以为字符串添加不同的意图,执行不同的操作,并为多行字符串设置不同的格式。
检查以下示例:
笔记
使用 Scala 工作表快速评估您的结果。
将带有连接符 ("++") 的间隙插入到字符串中。
使用转换为“”“字符串””意图将字符串转换为多行字符串,反之亦然。
笔记
转换为多行字符串会删除转义序列,例如“\\”或“\n”。
输入您的字符串,然后从意图列表中选择转换为“”“字符串”“”。AltEnter
您还可以将多行字符串转换为常规字符串。按打开意向列表。选择转换为“字符串”并按。查看结果。AltEnterEnter
动图要输入多行字符串,请在编辑器中输入三引号。如果按,它将自动调用该方法。该方法删除多行字符串的左侧部分,直到指定的分隔符。空白也被保留。Enter
stripMargin
stripMargin
动图
添加.replace("\r"," ")意图。此意图使您可以将插入符号保留在多行字符串中下一行的正确位置,无论您当前使用什么操作系统。
输入多行字符串,按并从列表中选择适当的意图。AltEnter
使用“插入语言/引用”意图将语言或引用插入到多行字符串文字中。有关更多信息,请参阅语言注入文档。
您可以将语言注入带有边距的多行字符串文字中。
动图使用Scala 设置中的多行字符串选项卡为多行字符串选项设置不同的格式,例如边距字符缩进或禁用多行字符串支持。
在主菜单中,选择文件 | 设置| 编辑| 代码风格| Scala。
在Scala页面上,选择多行字符串选项卡。
编辑设置并单击“确定”。
将简单字符串转换为添加变量引用的插值字符串。
隐式提示
IntelliJ IDEA 允许您启用、展开和折叠隐式转换和参数的编辑器提示,以帮助您阅读代码。
在主工具栏上,选择查看 | 显示隐式提示。
在编辑器中,右键单击提示,然后从弹出菜单中选择适当的操作,以展开现有提示、禁用模式或查看隐式参数。
或者,在编辑器中,您可以按Ctrl+Alt+Shift+ +启用隐式提示。如果您再次按相同的快捷键,IntelliJ IDEA 会展开隐式提示以向您显示更详细的信息。按Ctrl+Alt+Shift+ -可折叠提示。
方法链的类型提示
IntelliJ IDEA 自动显示长表达式链的类型提示。

如果右键单击提示并从上下文菜单中取消选中“显示方法链嵌入提示”选项,则可以禁用嵌入提示。从同一菜单中,您可以控制如何显示镶嵌提示以及隐藏哪些提示。

访问镶嵌提示设置
在“设置”对话框 ( ) 中,转到编辑器 | 镶嵌提示| Scala。CtrlAlt0S
从列表中选择方法链并选择或清除以下选项:
显示方法链提示:清除此选项可禁用提示。
对齐方法链中的类型提示:默认情况下,IntelliJ IDEA 将提示显示为单独的列,这可以帮助您轻松查看类型流。
在方法链中隐藏相同的类型:使用此选项,您可以在类型明显时省略提示。
显示方法链的最小唯一类型:您可以更改链中显示提示所需的唯一类型的数量。
查找隐式的用法
您可以使用“查找用法”操作从隐式定义导航到其用法。
此功能依赖于字节码索引,还可以用于定位“按原样”源代码中不存在的以下隐藏元素:
apply
/unapply
方法调用单一抽象方法(SAM) 类型实例化
foreach
//map
//通过flatMap
for -compression 调用filter
withFilter
在编辑器中,选择隐式定义,然后从上下文菜单中选择“查找用法” 。AltF7
在“查找”工具窗口中查看结果。
隐式自动导入
IntelliJ IDEA 支持自动导入未解析的隐式转换。
在编辑器中输入您的代码。将插入符号放在未解决的表达式处,然后按。AltEnter
在建议选项列表中,选择要导入的转换。
因此,IntelliJ IDEA 添加了必要的导入语句。
笔记
当您将插入符号放在未解析的表达式处时,IntelliJ IDEA 会显示一个弹出窗口,建议导入选项。您可以在“自动导入”设置中禁用弹出通知。
隐式转换
IntelliJ IDEA 允许您调用隐式转换方法和参数。
隐式转换方法
选择一个表达式并按CTRL+Shift+Q(CTRL+Q对于 macOS)以调用适用的隐式转换列表。该列表显示顶部显示的常规范围和列表底部显示的扩展范围。
笔记
IntelliJ IDEA 突出显示用于所选表达式的隐式转换。如果 IntelliJ IDEA 找不到隐式转换或者找到多个匹配项,则会打开“引入变量”列表。
如果需要,请将隐式转换方法显式设置。按并选择设为显式或设为显式(导入方法)。AltEnter
如果您选择“显式”,则 IntelliJ IDEA 将返回带有类名的方法调用。如果您需要确保编译器导入您最初想要的特定隐式转换方法,这可能会有所帮助:
如果您选择显式(导入方法),则该方法将静态导入,并且 IntelliJ IDEA 仅返回其调用,而不返回类名。此外,下次打开有用的隐式转换列表时,您将在常规范围内看到此方法:
隐式转换参数
将插入符号放在使用隐式转换的方法处,然后按以调用隐式参数。当您想找出传递给特定调用的隐式参数时,这可能有助于代码分析。IntelliJ IDEA 还允许您查看递归隐式参数。CtrlShift0P
笔记
IntelliJ IDEA 突出显示使用隐式参数的方法调用。
如果 IntelliJ IDEA 找不到传递隐式参数的方法调用,它会显示一条弹出消息:
类型 信息 操作
IntelliJ IDEA 允许您使用 Scala Show Type Info操作来处理类型推断:
要在编辑器中调用“显示类型信息”操作,请导航至该值并按。CtrlShift0P
笔记
如果您在“设置”| “编辑器”选项卡上选择了“鼠标悬停后显示类型信息,ms”复选框。语言和框架 | Scala 中,您可以使用鼠标导航到某个值以查看其类型信息。
您还可以查看值定义的类型信息。将插入符号放在值定义处并按:CtrlShift0P
笔记
您可以使用相同的快捷方式查看表达式的类型信息。
要添加类型注释,请突出显示该值,然后按并从上下文菜单中选择将类型注释添加到值定义:这样就会添加类型注释。ShiftEnter
动图要删除类型注释,请按并选择从值定义中删除类型注释。ShiftEnter
包裹/展开表达式
您可以在键入时自动包装或解开 Scala 代码中的表达式。
笔记
要控制 Scala 中的编辑器行为,请参阅智能键设置。
在编辑器中输入代码。
在要换行的表达式之前添加左大括号,IntelliJ IDEA 会自动在表达式末尾添加右大括号。要解包表达式,请删除左大括号,IntelliJ IDEA 会自动删除右大括号。
动图
代码完成
您可以使用代码完成来执行以下操作:
要导入类,请按代码,选择导入类。但是,在很多情况下,IntelliJ IDEA 会识别您需要导入的内容并显示建议列表。ShiftEnter
动图基于名称的参数类型建议。IntelliJ IDEA 允许您在实际添加类型引用之前自动完成名称和类型。
调用转换为内插字符串意图。
您可以使用 后的代码补全轻松将常规字符串转换为内插字符串
$
。动图或者,选择字符串中的串联值,然后按并选择转换为内插字符串。AltEnter
笔记
转换为格式化字符串选项将为您提供基本的 Java 格式化字符串。
如果您有带有继承者、Java 枚举和 Scala 枚举的密封类型,您可以为它们生成详尽的匹配检查。请注意,可以使用自动完成功能。
因此,编译器会检查密封类型的所有可能成员的模式匹配。
您不仅可以完成 case 子句内部的代码,还可以完成整个 case 子句。
动图
根据使用情况创建
IntelliJ IDEA 允许您创建新的代码元素,而无需先声明它们:
在编辑器中,键入新代码元素的名称,然后按。AltEnter
从意图列表中,选择您需要的意图。
按。Enter
结构视图
IntelliJ IDEA 允许您查看代码的结构:
要打开“结构”工具窗口,请按。Alt07
要从结构工具窗口导航到编辑器中的代码项,请按。F4
要突出显示代码,请按。CtrlEnter
Java 到 Scala 代码转换
IntelliJ IDEA 允许您将 Java 代码转换为 Scala。
复制 Java 代码(表达式、方法、类)并将其粘贴到 Scala 文件中。
IntelliJ IDEA 显示“从 Java 转换代码”对话框,建议进行转换。单击“确定”。
如果您不想使用复制/粘贴操作,可以在编辑器中打开 Java 文件并选择Refactor | 转换为Scala。
在这种情况下,IntelliJ IDEA 将使用转换后的代码创建一个 Scala 文件。
Scala库类转Java代码反编译
如果您打开一个不在代码库中但来自依赖项之一的类,并且该类的源代码不可用,IntelliJ IDEA 将询问您是否应该尝试将该类的 JVM 字节码反编译为 Java。

单击反编译为 Java查看结果。
Scala 生成动作
用于生成操作,例如覆盖、委托或实现方法。AltInsert

例如,选择“覆盖方法”操作。IntelliJ IDEA 显示一个对话框,其中包含可以覆盖的方法列表。选择您需要的并单击“确定”。

当您键入override
关键字时,相应的补全就会起作用。

Scala 模板
IntelliJ IDEA 允许您使用预定义的 Scala 模板。
在编辑器中开始输入代码,然后按。IntelliJ IDEA 显示 Scala 的可用实时模板列表。Ctrl0J
选择您需要的并按。Enter
动图
您还可以定义新模板或编辑现有模板。
选择设置 | 编辑| 实时模板。
从右侧的选项中,打开Scala模板列表。
如果您想添加新模板,请单击
。
如果您想编辑现有模板,请选择您需要的模板并更改默认定义。
Scala 后缀补全
您可以根据在点后键入的后缀将已键入的表达式转换为另一个表达式。

要启用/禁用后缀完成或查看特定于后缀的预定义模板、其描述和代码示例的列表,请打开位于“设置”| “后缀”的“后缀完成”页面。编辑| 一般的。
Scala 检查
您可以在“设置”| “检查”页面上检查 Scala 的可用检查。编辑 。CtrlAlt0S
由于 IntelliJ IDEA 也支持Akka,因此有多个 Akka 检查可用。

到处搜索
正如 IntelliJ IDEA 支持的许多其他编程语言一样,Search Everywhere是一项强大的功能,可让 Scala 开发人员快速、轻松地导航他们的代码。您可以从顶部菜单打开它:导航| 到处搜索,但我们建议您转到“设置”|“ Keymap ,在操作列表中找到Search Everywhere ,并将其与您选择的简单快捷方式绑定。

默认情况下,Search Everywhere在弹出窗口中打开,允许您通过类名称(包括特征和对象)、文件名称、代码中使用的所有符号的名称(字段、方法、变量、等等),并且同时通过所有这些。您还可以搜索IntelliJ IDEA 的操作- 其中有很多,这实际上是了解 IntelliJ IDEA 可以为您做什么的好方法。
这个列表可以通过插件扩展——例如,Git 插件添加了搜索 git 引用的功能——并且通过单击弹出窗口右上角的图标,您可以将 Search Everywhere 移动到主菜单的底部您还可以在屏幕上看到您搜索的符号在代码中的外观。

基于机器学习的代码补全
除了可用于 Scala 代码的常规代码补全功能外,您还可以启用基于机器学习的 Scala 代码补全。它应用从收集的数据中学到的规则,从而产生更好的建议。
启用机器学习代码补全
笔记
必须启用机器学习代码完成插件。
在“设置”对话框 ( ) 中,转到编辑器 | 一般| 代码完成。CtrlAlt0S
从右侧选项的“机器学习辅助完成”部分下,选择“基于机器学习排序完成建议”| Scala。
如果需要,请配置排序选项以查看机器学习如何影响元素的顺序。但是,由于此功能是实验性的,因此排名可能不会发生明显变化。
单击“确定”保存更改。
感谢您的反馈意见!