在Java中,程序从类的静态main方法开始。但是在Scala中,它从对象的主要方法开始。
有谁知道这样设计的合理性?
Scala还提供了一个名为App
的特征,如果一个对象扩展了这个特征,它可以替换main
方法。有没有人有关于哪一个(App
或main
)是首选方式的想法?
谢谢!
答案 0 :(得分:7)
Scala具有单例对象而不是java静态成员。所以对象的主要方法是java静态主方法的类比。
答案 1 :(得分:4)
我总是在我的主类中扩展App
,并且知道没有理由为什么有人想要编写一个显式的main方法 - 除了可能与其他一些对这些事情过于挑剔的代码兼容。每当我在Scala中看到一个显式的main方法时,我想知道代码是否已经过时(早于App
特征)或者作者是Scala的新手。
但是这个问题似乎主要是为什么Scala的设计者省略了静态方法。您可能会发现this question about how static members are not object-oriented有帮助。
答案 2 :(得分:3)
Scala没有静态方法。如果Scala需要从静态main方法启动程序,那么你永远不能运行Scala程序,因为你无法编写静态main方法。
答案 3 :(得分:1)
使用static就像使用全局函数一样。 Scala是纯粹的面向对象语言,没有静态。但实际上Scala编译器会为JVM生成静态main。 建议使用“App”特性进行简短的学习计划。