ses*_*ses 1 syntax program-entry-point scala method-declaration
为什么main在Scala中定义方法时,没有必要使用=?
例:
def main(args:Array[String]) {
...
Run Code Online (Sandbox Code Playgroud)
但是如果想要定义另一个函数则需要它.
def main(args:Array[String]) **=** {
...
Run Code Online (Sandbox Code Playgroud)
有人可以解释这种语法吗?
在Scala中,方法声明中的等号告诉编译器该方法返回一些东西.如果没有出现等号,则编译器知道该方法不返回任何内容.这相当于voidJava中的方法.在Scala中,返回任何内容与返回相同Unit.
scala> def noEquals(x: Int) { x + 1 }
noEquals: (x: Int)Unit
scala> val y = noEquals(5)
y: Unit = ()
Run Code Online (Sandbox Code Playgroud)
与出现等号的示例相比:
scala> def hasEquals(x: Int) = { x + 1 }
hasEquals: (x: Int)Int
scala> val z = hasEquals(5)
z: Int = 6
Run Code Online (Sandbox Code Playgroud)
在Java中,main方法不返回任何内容(它被声明为void,如public static void main(String[] args)).因此,Scala版本不会出现等号.
另请注意,只要方法返回Unit(尽管这会违反约定),您可以使用等号编写main方法.此外,对于其他方法,"等号"不是"必需的"......只需要返回的东西.如果你正在编写一个不返回任何东西的方法,那么放弃等号是完全可以接受的(也是适当的).
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |