(一)定义函数
从不同的角度理解Scala函数会有不同的定义,如果一个函数作为某一对象的成员,那么这种函数就称为方法。如果从面向函数的角度理解Scala函数,那么Scala函数会具有面向函数式编程的特性。
(二)调用函数
- 返回值=函数
- 代码如下
object Base43 {
// 定义一个函数
// 1、位置:可以写在main里面,也可以写在外面
// 2、要点
// 该函数的类型
// 省略return
// 返回值,可以省略return
def max(x: Int, y: Int): Int = {
if(x > y) {
x
} else {
y
}
}
def main(args: Array[String]): Unit = {
// 调用函数
val s = max(10,20)
println(s);
}
}
(三)函数规则
注意
1.只有一行可以省略{}。当Scala的函数体中只有一行表达式时可以省略{},输出结果依然不变。
2.最后一条语句为函数的返回值。当函数体中有多个语句存在时,返回最后一条语句的值。
3.函数的返回类型可以省略。它会自动推断。
4.没有形参,可以省略(),那么在调用函数时也不需要添加()
简单来说
- 1、没有参数列表,可以省略定义函数时的(),那么调用的时候,也不需要再加上()
- 2、返回的最后一条语句为函数的返回值
- 3、如果函数体只有一句代码,又可以省略{}
代码如下
object Base44 {
// 返回值的类型
// 省略return
// def getSum(x:Int, y:Int) :Int = {
// x + y
// }
def getSum(x:Int, y:Int) :Int = x + y
def dosomething: Int = {
println("xxx")
11
}
// 返回值,可以省略return
def max(x:Int, y:Int):Int = {
if(x > y) {
x
} else {
y
}
}
}
(四)函数返回多个值
例题
- 定义一个函数,求三个数中的最大值及最小值
代码如下
object Base45 {
/**
* 定义一个函数,求三个数中的最大值
*/
def max(x:Int, y:Int, z:Int):Int = {
// if(x > y) {
// x
// } else {
// y
// }
// }
val c = if (x > y){
x
} else {
y
}
if(c > z) { c } else { z }
}
/**
* 定义一个函数,求三个数中的最小值
*/
def min(x:Int, y:Int, z:Int):Int = {
val c = if (x < y){ x } else{ y }
if( c > z ) { z } else{c }
}
def main(args: Array[String]): Unit = {
val s = max(100, 100, 100)
println(s);
val m = min(1,10,100)
println(s);
}
}
- 定义一个函数,返回三个数中的最大值和最小值
代码如下
object Base46 {
/**
* 定义一个函数,返回三个数中的最大值和最小值
*/
def getMaxandMin(x:Int, y:Int, z:Int): (Int, Int) = {
var min:Int = x
var max:Int = x
min = if(x < y) { x } else { y }
min = if(min < z) { min } else { z }
max = if(x < y) { y } else { x }
max = if(max < z) { z } else { max }
//println(min, max)
(min, max)
}
def main(args: Array[String]): Unit = {
// 调用函数
val r = getMaxandMin(10,20,3)
println(s"最小值${r._1}")
println(s"最大值${r._2}")
}
}