一个类可以有自己的方法,scala中的方法和Java方法类似。但scala与Java定义方法的语法是不一样的。
语法
def methodName (参数名:参数类型, 参数名:参数类型) : [return type] = { // 方法体:一系列的代码 }
[!NOTE]
示例
定义一个方法,实现两个整形数值相加,返回相加后的结果
调用该方法
参考代码
scala> def add(a:Int, b:Int) = a + b
m1: (x: Int, y: Int)Int
scala> add(1,2)
res10: Int = 3
scala定义方法可以省略返回值,由scala自动推断返回值类型。这样方法定义后更加简洁。
[!DANGER]
定义递归方法,不能省略返回值类型
因为, 递归调用是一层一层向内走, 当前那一层无法推断返回类型, 会导致一系列问题.
示例
定义递归方法(求阶乘)
比如求10的阶乘
10 * 9 * 8 * 7 * 6 * ... * 1
参考代码
scala> def m2(x:Int) = {
| if(x<=1) 1
| else m2(x-1) * x
| }
<console>:13: error: recursive method m2 needs result type
else m2(x-1) * x