scala - 在 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 个主类。
解决方案
Scala 有惯用的概念,需要在同一个文件中包含多个类/对象/特征,例如
- 伴生对象
- 代数数据类型
然而,一般来说,在同一个文件中定义任意多个类/对象/特征并不是最佳实践,除非它们紧密相关。您的对象碰巧每个都有一个main
方法这一事实并不相关,因为它只是被认为是一种常规方法。
推荐阅读
- swift - 实现定位协议
- ios - PDFView with PKCanvasView drawingGestureRecognizer on iOS14
- linux-kernel - 如何创建批量 USB 小工具 WinUSB 设备
- ios - 使用哪种模式使应用看起来像
- javascript - React JS - 自定义手风琴内容不会滑动打开
- laravel - 基于集合或子属性过滤
- python - 计算不存在值的频率
- swift - CollectionViewCell:通过indexPath访问单元格的数据?
- android - 单击按钮时不会转到另一个视图
- angular - 离子“离子按钮”不是已知元素:“我该如何解决这个问题?