主要方法在Scala [英] main method in Scala

查看:160
本文介绍了主要方法在Scala的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了一个scala类并定义了main()方法。它编译,但是当我运行它,我得到NoSuchMethodError:main。在所有的scala示例中,我已经看到,主要方法是在一个对象中定义的。在Java中,我们在类中定义main方法。是否可以在scala类中定义main(),或者我们总是需要一个对象?

I wrote a scala class and defined the main() method in it. It compiled, but when I ran it, I got NoSuchMethodError:main. In all the scala examples, I have seen, the main method is defined in an object. In Java we define the main method in a class. Is it possible to define main() in a scala class or do we always need an object for this?

感谢

推荐答案

正如尤金在评论中说,在Scala中没有静态方法。但请注意:

As Eugene said in a comment, there are no static methods in Scala. But watch this:

$ cat Echo.scala
object Echo {
  def main( args:Array[String] ):Unit = args foreach println
}

$ scalac Echo.scala

$ javap Echo\$.class
Compiled from "Echo.scala"
public final class Echo$ {
  public static final Echo$ MODULE$;
  public static {};
  public void main(java.lang.String[]);
}

$ javap Echo.class
Compiled from "Echo.scala"
public final class Echo {
  public static void main(java.lang.String[]);
}

请注意,Echo类的classfile(不是Echo $,确实有一个public static void main方法。 Scala为在对象中定义的方法生成与Java兼容的静态方法。

Note that the classfile for the Echo class (not Echo$, the object) does indeed have a public static void main method. Scala generates static methods for methods defined in objects for compatibility with Java.

但是,我认为在Scala程序中创建一个主要的方法。使用应用程序特征;它更干净:

However, I consider creating a main method in a Scala program an anachronism. Use the App trait instead; it's cleaner:

object Echo extends App {
  args foreach println
}

这篇关于主要方法在Scala的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆