1

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

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

例子:

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

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

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

有人可以解释这种语法吗?

4

1 回答 1

7

在 Scala 中,方法声明中的等号告诉编译器该方法返回了一些东西。如果没有出现等号,则编译器知道该方法不返回任何内容。这相当于voidJava 中的方法。在 Scala 中,返回 nothing 与返回相同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 版本省略了等号。

另请注意,您可以使用等号编写 main 方法,只要该方法返回Unit(尽管这将违反约定)。此外,等号对于其他方法不是“必需的”......只是那些需要返回东西的方法。如果您正在编写一个不返回任何内容的方法,那么省略等号是完全可以接受的(也是适当的)。

于 2012-09-07T01:11:14.517 回答