函数
函数的基本使用
返回值:
- 1.指定返回值类型
- 2.函数内,最后一个表达式(最后一句代码) 就是函数的返回值
- 3.Unit 表示这个函数没有返回值 (void)
参数:
- 如果没有参数,在定义函数时,可以省略(),在调用函数时,就不能添加()
//没有参数,可以省略()
def say:Unit = {
println("hello world!")
}
def main(args: Array[String]): Unit = {
say //调用函数
}
要点:
-
1. 特别注意要写=
-
2. 返回值类型要指定
函数规则
1.只有一行可以省略{}。当Scala的函数体中只有一行表达式时可以省略{},输出结果依然不变。
2.最后一条语句为函数的返回值。当函数体中有多个语句存在时,返回最后一条语句的值。
3.函数的返回类型可以省略。它会自动推断。
4.函数没有形参,在定义函数时可以省略(),那么在调用函数时也不需要添加()
案例一:找到x y的最大值
def max(x: Int,y: Int):Int = {
if(x > y)
x
else
y
}
// 如果没有参数,可以省略()
def say(): Unit = {
println("hello world")
}
def main(args: Array[String]): Unit = {
say()
var rst = max(609,913)// 调用函数
println((s"609 和 913的最大值是:${rst}"))
}
案例二:找到x y z的最大值
/**
//方法一:三选一
def max(x: Int,y: Int,z: Int):Int = {
// 自行修改代码 完成功能
if(x >= y && x >= z)
x
else if (y >= z && y >= z)
y
else
z
}
*/
//方法二:两个选一个较大值 较大者和剩下的那个中选择一个
def max(x: Int,y: Int,z: Int):Int ={
val res = if(x > y) x else y // x y 的较大者
if (res > z) res else z
}
def main(args: Array[String]): Unit = {
var rst = max(609,723,913)// 调用函数
println((s"较大值:${rst}"))
}
返回多个函数值
案例三:找到x y z的最大值和最小值
// 函数返回多个数据
// 作用:找到x y z中的最大值 和 最小值
// (Int Int)是返回值的类型 表示这个函数的返回值中有两个整数!!!
def max(x: Int,y: Int,z: Int):(Int, Int) = {
var maxValue = if(x > y) x else y // x,y 的较大者
maxValue = if(maxValue > z) maxValue else z
var minValue = if(x > y) x else y
minValue = if(minValue < z) minValue else z
// 返回一个容器 包含两个值
(minValue, maxValue)
}
def main(args: Array[String]): Unit = {
var rst = max(609,913,723) // 调用函数
println(s"最小值是:${rst._1},最大值是:${rst._2}")
}
参数默认值
如果在调用时没有传入,就使用这个默认值
格式:def 函数名(参数1:类型1=默认值1,参数2:类型2=默认值2)
// 参数默认值:如果在调用的时候,没有传入
// 格式:参数名:类型 = 默认值
def greet(name: String="xx", age: Int=24, gender: String="女") : Unit = {
println(s"你好,我是${name},我今年${age}岁,我的性别是:${gender}")
}
def main(args: Array[String]): Unit = {
greet("hh",18,"女")
greet("hh",18)
greet("hh")
greet()
// 设置年龄为20, 其他两个参数使用默认值
greet(age=20)
greet(gender="男",age=20)
}