【问题标题】:Why doesn't the method main() require '=' in its definition in Scala? [duplicate]为什么方法 main() 在 Scala 中的定义中不需要“=”? [复制]
【发布时间】:2012-08-31 21:16:40
【问题描述】:

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

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

示例:

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

但如果要定义另一个函数,它需要它。

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

谁能解释一下这个语法?

【问题讨论】:

    标签: scala syntax main method-declaration


    【解决方案1】:

    在 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 版本省略了等号。

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

    【讨论】:

      猜你喜欢
      • 2012-12-28
      • 2015-07-10
      • 2013-09-08
      • 2012-03-20
      • 1970-01-01
      • 2023-03-27
      • 2010-10-01
      • 2011-07-10
      • 2014-09-10
      相关资源
      最近更新 更多