首页 > 解决方案 > 在 Scala 中,具有 main 方法的多个对象可以存在于单个文件中并单独运行。这背后的原因是什么?

问题描述

我在 scala 3 中的单个文件中编写了以下代码

@main def main11 =
  println("main11 printed something")

object Main10 extends App {
  println("Main10 Executed !!".toUpperCase())
  main11
}

object Main2  {
  def main(args: Array[String]): Unit = {
    println("Main2 can run too !!".toUpperCase())
    Main10
  }
}

它编译得很好,我可以main11 Main2 Main10在 IDE 中运行其中的任何一个。

这是什么原因?

例如。

main11 输出

main11 printed something

Main2 输出

 MAIN2 CAN RUN TOO !!
 MAIN10 EXECUTED !!
 main11 printed something

通常在其他语言中,我在 1 个文件中看到 1 个主类。

标签: scalamainscala-3

解决方案


Scala 有惯用的概念,需要在同一个文件中包含多个类/对象/特征,例如

  • 伴生对象
  • 代数数据类型

然而,一般来说,在同一个文件中定义任意多个类/对象/特征并不是最佳实践,除非它们紧密相关。您的对象碰巧每个都有一个main方法这一事实并不相关,因为它只是被认为是一种常规方法。


推荐阅读