一、什么是函数
要点:
1. 特别注意要写=
2. 返回值类型要指定
基本函数:
object base31 {
// 定义一个函数
// 功能:求两个数的较大者
// 格式:
// 1.有一个等号 =
// 2.返回值类型,函数内的最后一个表达式或者语句的值,就是函数的表达式。 (如:下面if语句就是返回值)
def max(x: Int, y: Int): Int = {
if (x > y)
x
else
y
}
def main(args: Array[String]): Unit = {
val rst = max(1, 100)
println(s"$rst")
}
}
不需要参数,可以省略()
object base31 {
// 定义一个函数
// 功能:求两个数的较大者
// 格式:
// 1. 有一个 =
// 2. 返回值类型。
// 函数内的最后一个表达式或者语句的值,就是函数的返回值。
// Unit 表示没有返回值,调用这个函数时,不会接收到任何的处理结果。
def max(x: Int, y: Int): Int = {
val t = if (x > y) x else y
t // 就是返回值
}
// 如果一个函数不需要参数,可以省略()
//
def say: Unit = {
printf("hahahaha~~~")
}
def main(args: Array[String]): Unit = {
val rst = max(1, 100)
println(s"$rst")
// 调用一个没有()的函数,也不要加()
say
}
}
练习
1.求三个数的最大值
(1)三选一
object base32 {
// 定义一个函数
// 功能:求三个数的较大者
// 分析:
/*
* 1. 三选一
if(x>=y && x >=z){
x
} else if(y>=x&&y>=z){
y
} else{
z
}
def main(args: Array[String]): Unit = {
val rst = max(1000, 200, 100)
println(s"$rst")
}
}
(2)二选一后二选一
object base32 {
// 定义一个函数
// 功能:求三个数的较大者
// 定义求两个数最大值的函数
* 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")
}
}
二、函数的调用
格式:返回值=函数(参数列表)
示例:两数求和
def getSum(x:Int, y:Int): Int = {
x + y
}
val s = getSum(10,20)
printf(s)
三、函数规则
1.只有一行可以省略{}。当Scala的函数体中只有一行表达式时可以省略{},输出结果依然不变。
2.最后一条语句为函数的返回值。当函数体中有多个语句存在时,返回最后一条语句的值。
3.函数的返回类型可以省略。它会自动推断。
4.函数没有形参,在定义函数时可以省略(),那么在调用函数时也不需要添加()
四、返回多个值
让函数返回最大值和最小值数据
object base33 {
// 定义一个函数
// 功能:求三个数的最大值和最小值
//注意:函数需要返回多个值
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)
(maxValue,minValue) // 是个整体
}
def main(args: Array[String]): Unit = {
val rst = max(1000, 2000, 100)
// ._x 访问这个整体的某个值
println(s"最大值是:${rst._1},最小值是:${rst._2}")
}
}
五、元组
表示不同类型值的集合,即元组可以用于存放不同类型的元素,例如可以存放整型、字符串、浮点型、自定义类型等等。Scala的元组类型可以使方法同时返回多个值,省略了中间部分的解析和集合的遍历。
定义元组:
第一种表示方式为:(元素1,元素2,…元素N)
第二种表示方式为:new TupleN(元素1,元素2,…元素N)。N最大为22
访问元组:
元组通过Tuple_INDEX的方式访问元组中的元素,Tuple表示元组,INDEX表示索引。
object base34 {
def main(args: Array[String]): Unit = {
// 元组:容器,可以装入不同类型的数据类型的数据
//1.定义一个元祖,使用() 把数据包起来
val t=(1,"1",1.2,false)
//2.取出元素,通过._数字序号 来访问
//取出1.2
println(t._3)
//取出false
println(t._4)
}
}
1.定义一个元组,使() 把数据包起来用
2.取出元素,通过._数字序号 来访问