一. 函数参数的默认值
定义:
函数参数的默认值,是在定义函数时为特定参数预先设定的固定值,调用该函数时若未主动给这个参数传递数据,函数就会自动使用这个预设值来执行操作。
简单来说,它就像给函数参数 “留了个备用值”,避免了因参数缺失导致的调用错误。
格式:
def 函数名(参数1:类型1=默认值1,参数2:类型2=默认值2)
示例:
代码:
object base1201 {
// gender:
def greet(name:String="哈哈", age:Int=18, gender:String="女"):Unit = {
println(s"我是${name}, 我今年${age}, ${gender}")
}
def main(args: Array[String]): Unit = {
greet("小花", 18) // 默认值
greet("小明", 20, "男")
greet()
// 设置age为20,其他采用默认值
// 传参数的时候,指定参数的名字
greet(age = 20)
greet(gender = "男", age = 20)
}
}
代码分析:
-
定义了
greet函数,有三个参数name(默认值为 “哈哈”)、age(默认值为 18)、gender(默认值为 “女”),函数功能是打印出包含姓名、年龄、性别的信息。 -
在
main方法中,进行了多次greet函数调用:greet("小花", 18):使用传入的 “小花” 作为name,18 作为age,gender用默认值 “女”。greet("小明", 20, "男"):三个参数都使用传入的值。greet():三个参数都使用默认值。greet(age = 20):age使用传入的 20,name用默认值 “哈哈”,gender用默认值 “女”。greet(gender = "男", age = 20):gender使用 “男”,age使用 20,name用默认值 “哈哈”。
二. 创建不带()的方法
格式:
def 方法名:[返回类型]={}
示例:
代码:
object base1202 {
// 如果函数不需要参数,可以定义函数的时候,省略()
def greet():Unit = {
println(s"hahhaa~~~")
}
def main(args: Array[String]): Unit = {
// 如果定义函数的时候没有写(),那么在调用函数的时候,也不要加()
greet
}
}
注意: 定义函数指println(s"hahhaa~~~")这部分内容
- 当定义函数时如果没有写括号
()(即无参函数),例如def greet: Unit = println("hello"),那么调用时也不能加括号,必须写成greet。 - 反之,如果定义时带了括号(即使为空括号),例如
def greet(): Unit = println("hello"),调用时可以加括号greet()或不加greet。
三. 创建接受变参的方法
定义:
允许传入不同个数,但是类型相同的参数
变参特点:
函数中的参数的个数是不确定的。
写法:
参数类型后面加*,而参数类型*,这种方式只能接受同一类型的参数。
示例:
传入不同的数量的参数
第一个参数是学生的名字,从第二个参数开始,是这个学生的某个学科的得分 array 数组
object base1203 {
def greet(name:String, score:Int*):Unit = {
// score 是一个列表
var total:Double = 0
for(i <- score){
total += i
}
val avg = total / score.length
println(s"${name}, 平均分是:${avg}")
}
def main(args: Array[String]): Unit = {
//
greet("小花", 90, 100, 98, 100, 60)
greet("小明", 80, 88)
greet("小张", 90)
}
}
// 小花, 平均分是:89.6
// 小明, 平均分是:84.0
// 小张, 平均分是:90.0