方法的定义

文章目录

scala的方法关键字def声明开始。大致结构如下:

1
2
3
4
def methodName ([list of parameters]) : [return type] = {
method body
[return [expr]]
}

scala方法名可以包含字符、数字以及各种符号。方法名不能以数字开头。虽然scala的方法名不能以数字开头,但是可以以特殊字符开头。可用的特殊字符如:+,++,~,&,- , – ,\,/,:等。

scala的方法参数都是val类型,而不是var类型,因此在函数体内不可以修改参数的值。

关于scala的返回值有如下几个特点:

  • scala的方法是一定有返回值的,看起来返回值为空时返回的是值类型Unit;
  • 方法定义时返回值类型可以省略掉,scala会根据方法体中的内容推断出返回值类型;
  • 显式声明了返回值类型时,方法定义中的“等号”不可以省略掉;
  • 没有显式声明返回值类型时,则默认方法返回值为Unit,此时方法定义中的“=”也可省略掉;
  • 使用return可以显式返回,但是不推荐这样做;
  • 方法中的return关键字是可以省略掉的,默认方法中的最后一行就是函数的值;
  • 对于递归方法,必须显式指明返回值类型。

多提一点:在scala中分号也是可选的,不必在每个语句的后面都写上分号,这样会使代码更简洁。如果语句太长或者包含多行的话可以换行继续写,scala能够识别语句是否完整。通常使用分号的场景就是一行内有多条语句。