【问题标题】:How does the @main annotation in Scala 3 w​ork?Scala 3 中的 @main 注释是如何工作的?
【发布时间】:2021-09-21 22:33:57
【问题描述】:

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

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

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

class main extends scala.annotation.Annotation {}

在这里使用@main 会发生什么?

【问题讨论】:

    标签: scala main scala-3


    【解决方案1】:

    @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

    【讨论】:

      猜你喜欢
      • 2015-04-23
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      相关资源
      最近更新 更多