一. 定义函数
格式:
def max(x: Int, y: Int):Int = {
if(x > y)
x
else
y
}
其中:
def:是 Python 中用于定义函数的关键字,表明这是一个函数定义的开始。max:是函数名,用于标识这个函数,方便在其他地方调用该函数。(x: int, y: int):是函数参数列表,其中x和y是参数名,: int表示这两个参数的类型为整 数,即该函数期望接收两个整数类型的参数。后一个int:表示函数的返回类型为整数,即这个函数执行后会返回一个整数结果。
要点:
- 功能:求两个数的较大者
- 格式:
- 有一个 =
- 返回值类型 函数内的最后一个表达式或者语句的值,就是函数的返回值
二. 函数调用
格式: 返回值=函数(参数列表)
示例:
求两个数的较大者
object base1101 {
def max(x: Int, y: Int):Int = {
val t = if(x > y) x else y
t // 就是返回值
}
// 如果一个函数不需要参数,可以省略()
def say():Unit = {
println("hahahaha~~~")
}
def main(args: Array[String]): Unit = {
val rst = max(1,100)
println(s"${rst}")
// 调用一个没有()的函数,也不要加()
say
}
}
其中:
- 函数内的最后一个表达式或者语句的值,就是函数的返回值
Unit表示没有返回值,调用这个函数时,不会接收到任何的处理结果
- 在
main函数中,首先调用max函数,传入参数1和100,将返回的较大值100赋给rst并打印;然后调用say函数,执行打印操作。
三. 函数规则
规则
- 函数体仅一行表达式时,可省略大括号,输出结果不变。
- 函数体有多个语句时,返回最后一条语句的值。
- 函数返回类型可省略,会自动推断。
- 函数无形参,定义和调用时都可省略括号。
示例:
求两个数的较大者:
object base1102 {
// 定义一个函数
/*
* 1. 三选一
* if(x>=y && x >=z){
* x
* } else if(y>=x&&y>=z){
* y
* } else{
* z
* }
*
* 2. 两次 二选一
* var t = if(x>y) x else y
* if(t>z) t else z
* */
def max(x: Int, y: Int, z:Int):Int = {
var t = if(x>y) x else y
if(t>z) t else z
}
def main(args: Array[String]): Unit = {
val rst = max(1000,200,100)
println(s"${rst}")
}
}
其中:
max函数:接收三个整数参数x、y、z。首先通过var t = if(x>y) x else y找出x和y中的较大值并赋值给t,然后再通过if(t>z) t else z比较t和z,最终得到三个数中的最大值并返回。main函数:调用max函数,传入参数1000、200、100,将返回的最大值赋值给rst,然后使用println打印出rst的值。
四. 函数返回多个值
示例:
求三个数的最大值和最小值:
object base1103 {
def max(x: Int, y: Int, z: Int): (Int, Int) = {
var maxValue = if (x > y) x else y
maxValue = if (maxValue > z) maxValue else z
var minValue = if (x > y) y else x
minValue = if (minValue > z) z else minValue
// println(minValue, maxValue)
(minValue, maxValue) // 是一个整体
}
def main(args: Array[String]): Unit = {
val rst = max(1000, 200, 100)
// 访问这个整体中的某个值: ._数字
println(s"最小值是:${rst._1},最大值是:${rst._2}")
}
}
注意: 函数需要返回多个值。把要放回的数据使用()包在一起,成为一个整体
五. 元组
元组的定义: 容器,可以装入不同的数据类型的数据
访问元组: 元组通过Tuple_INDEX的方式访问元组中的元素,Tuple表示元组,INDEX表示索引。
示例:
object base1104 {
def main(args: Array[String]): Unit = {
// 1. 定义一个元组:使用( ) 把数据包起来,就可以了。
val t = (1, "1", 1.2, false, 0)
// 2. 取出元素,通过 ._数字序号 来访问
// 取出 1.2
println(t._3)
// 取出 false
println(t._4)
}
}