我正在努力使用 IntelliJ IDEA Scala 插件运行 Scala Hello World 项目。该项目的创建没有任何问题,但是当我创建应该运行的函数时,运行按钮不会出现。我不知道为什么它不起作用。
IntelliJ 版本 - 2020.3.1(社区版) Scala 插件版本 2020.3.18
我的代码是:
class Hello extends App {
println("Hello world")
}
我已经尝试创建 Scala 工作表并且它有效。
我正在努力使用 IntelliJ IDEA Scala 插件运行 Scala Hello World 项目。该项目的创建没有任何问题,但是当我创建应该运行的函数时,运行按钮不会出现。我不知道为什么它不起作用。
IntelliJ 版本 - 2020.3.1(社区版) Scala 插件版本 2020.3.18
我的代码是:
class Hello extends App {
println("Hello world")
}
我已经尝试创建 Scala 工作表并且它有效。
当你扩展App
时,它需要是 asobject Main extends App
而不是class Main extends App
。
请参阅Scala 2.13 规范 9.5(强调我的):
程序是一个顶级对象,它有一个类型为main的成员方法
(Array[String])Unit
程序的main方法可以直接定义在对象中,也可以继承。scala 库定义了一个特殊的类 scala.App,其主体充当主要方法
正如Suma 在他的回答中提到的,你应该使用对象,而不是类。该Hello
文件的代码应为:
object Hello {
def main(args: Array[String]): Unit = {
println("Hello world")
}
}
正如您在 SCALA 的第一行中所述。请注意,如果您更喜欢扩展App
,所有语句都将被执行,如最后一个链接中所述:
scala 命令的参数必须是顶级对象。如果该对象扩展了 trait scala.App,则该对象中包含的所有语句都将被执行;否则你必须添加一个方法 main 作为程序的入口点。
这意味着您还有另一种选择:
object Hello extends App {
println("Hello world")
}
我创建了一个显示示例的 gif。