目录
方法
定义方法
返回值类型推断
方法
一个类可以有自己的方法,scala中的方法和Java方法类似。但scala与Java定义方法的语法是不一样的。
定义方法
语法
defmethodName(参数名:参数类型,参数名:参数类型):[returntype]={
// 方法体:一系列的代码
}
[!NOTE]
参数列表的参数类型不能省略(因为之前定义变量的时候可以省略, 这里不要混淆了,因为变量给了初始值,可以根据初始值推断类型)返回值类型可以省略,由scala编译器自动推断返回值可以不写return,默认就是{}块表达式的值
示例
定义一个方法,实现两个整形数值相加,返回相加后的结果
调用该方法
参考代码
scala>defadd(a:Int,b:Int)=a +bm1:(x:Int,y:Int)Intscala>add(1,2)res10:Int=3
返回值类型推断
scala定义方法可以省略返回值,由scala自动推断返回值类型。这样方法定义后更加简洁。
[!DANGER]
定义递归方法,不能省略返回值类型
因为, 递归调用是一层一层向内走, 当前那一层无法推断返回类型, 会导致一系列问题.
示例
定义递归方法(求阶乘)
比如求10的阶乘
10 * 9 * 8 * 7 * 6 * ... * 1
参考代码
scala>defm2(x:Int)={|if(x<=1)1|elsem2(x-1)*x|}<console>:13:error:recursive method m2 needs result typeelsem2(x-1)*x