Scala3中的@main注释如何工作?

在学习 Scala 3 时,我看到了一种新的编写方式main

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

我检查了来源@main,它只是

class main extends scala.annotation.Annotation {}

使用@main这里发生了什么?

回答

@main真的没有做任何事情。Scala 编译器可以完成所有工作。Scala 编译器将查找任何标记为的方法@main并将它们转换为 java (jvm) 入口static void main方法。

Scala 还支持多个@main . 它将每个@main方法链接到static void不同类中的单个方法。

除了将@main方法连接到 java 入口点之外,Scala 编译器还添加了一些基本的参数解析。例如,你可以这样做:

@main def go(name:String, age:Int) = println(s"hello, $name ($age)")

并期望它在您传递姓名和年龄时通过 CLI 工作。

所以@main真的只是一个标记注释。

参考文档:https : //dotty.epfl.ch/docs/reference/changed-features/main-functions.html


以上是Scala3中的@main注释如何工作?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>