为什么 main() 方法在 Scala 中的定义中不需要 '='?



可能重复:
scala:';def foo={1}';vs';def foo{1}';

为什么在Scala中定义方法main时,不需要使用=

示例:

def main(args:Array[String]) {
    ...

但如果一个人想定义另一个函数,就需要它

def main(args:Array[String]) **=** {
...

有人能解释一下这个语法吗?

在Scala中,方法声明中的等号告诉编译器该方法返回了一些东西。如果没有等号出现,则编译器知道该方法不返回任何内容。这相当于Java中的void方法。在Scala中,不返回任何内容与返回Unit是一样的。

scala> def noEquals(x: Int) { x + 1 }
noEquals: (x: Int)Unit
scala> val y = noEquals(5)
y: Unit = ()

与等号出现的示例进行比较:

scala> def hasEquals(x: Int) = { x + 1 }
hasEquals: (x: Int)Int
scala> val z = hasEquals(5)
z: Int = 6

在Java中,main方法不返回任何内容(它被声明为void,就像在public static void main(String[] args)中一样)。因此,Scala版本去掉了等号

还要注意,只要方法返回Unit(尽管这违反了约定),就可以编写一个带有等号的主方法。此外,等号对于其他方法不是"必需的"。。。只是那些需要归还东西的人。如果您正在编写一个不返回任何内容的方法,那么去掉等号是完全可以接受的(也是适当的)。

相关内容

  • 没有找到相关文章

最新更新