目录
方法和函数
说明:在Scala中既有方法也有函数,大多数情况下,他们没有区别,作为初学者暂时不用明确区分。一般情况下方法的类型为具体一个返回值类型,可以省略不写。而函数的类型为:参数类型 => 返回值类型 ,也可以省略不写,在后边的代码中会体现这个特点。
方法的定义
def max(a:Int,b:Int):Int={
if(a>b) return a else return b
}
println(max(1, 3))
- 方法用def来定义
- 方法体中最后的返回值可以使用return,如果使用了return,那么方法体的返回值类型一定要定义
- 如果方法体中没有return,默认将方法体中的最后一行计算的结果当做返回值返回,方法体的返回值类型可以省略(自动推断)
- 定义方法传入的参数一定要指定类型
- 如果方法体为一行代码,方法的定义也可以简写
比如:
def max(a: Int, b: Int): Int = if (a > b) return a else return b
- 如果定义的方法没有返回值(Unit)也可以省略方法名称和方法体之间的“=”,要注意,省略了等号,不管有没有返回值都不会反回任何内容。
递归方法
定义方法递归调用时必须显示的定义出函数返回值,否则其无法推断,不能通过编译
def fun(num: Int): Int = {
if (num == 1) 1 else num * fun(num - 1)
}
方法的默认参数
Scala支持定义方法时对参数设置默认值。调用时输入参数则使用输入的参数,空参则使用默认值
def sum(a: Int = 10, b: Int = 20) = {
a + b
}
println(sum())//空参
println(sum(100,200))//覆盖