Scala函数参数具有丰富特性,支持多种灵活定义方式。必选参数是基础,定义时需声明类型,调用时必须按顺序传入对应值,如def add(a: Int, b: Int) = a + b,调用add(1, 2)。
默认参数允许指定默认值,调用时可省略,如def greet(name: String = "Guest") = println(s"Hello $name"),可直接调用greet()使用默认值。
命名参数通过参数名指定值,打破顺序限制,增强可读性,例如greet(name = "Alice"),多参数时尤为实用。
可变参数用*声明,接收多个同类型值并转为数组,如def sum(nums: Int*) = nums.sum,调用sum(1,2,3)。
参数默认不可变(val),函数体内无法修改,体现函数式编程特性。这些机制提升了代码灵活性与可读性,适应不同场景需求。
1.函数参数的默认值
1. 定义有默认值的函数
格式:
ini
体验AI代码助手
代码解读
复制代码
def 函数名(参数1:类型1=默认值1,参数2:类型2=默认值2)
定义一个函数,并使用不同的参数来测试使用。
scala
体验AI代码助手
代码解读
复制代码
object base36 {
//gender 性别
def greet(name:String="哈哈",age:Int=18, gender:String="女"):Unit = {
println(s"我是${name}, 我今年${age}, ${gender}")
}
def main(args: Array[String]): Unit = {
greet("小花",15,"女")
//传参数是可以自定参数的值(指定的参数可以不按顺序写入)
greet(gender="女",age=20)
}
}
传参数是可以自定参数的值(指定的参数可以不按顺序写入)
2.创建不带()的方法
css
体验AI代码助手
代码解读
复制代码
def 方法名:[返回类型]={}。
代码实例:
scala
体验AI代码助手
代码解读
复制代码
def sayHello: Unit = {
println("hello")
}
sayHello // 不用加()
scala
体验AI代码助手
代码解读
复制代码
object base37 {
// 如果函数不需要参数,可以在定义函数的时候,省略()
def greet: Unit = {
println("hahhaaaa")
}
def main(args: Array[String]): Unit = {
// 如果在定义函数的时候没有写(),那么 在调用函数的时候,也不要加()
greet
}
}
a. 如果函数不需要参数,可以在定义函数的时候,省略()
b.如果在定义函数的时候没有写(),那么 在调用函数的时候,也不要加()
3.创建接受变参的方法
scala
体验AI代码助手
代码解读
复制代码
object base38 {
//传入不同数量的参数
//第一个参数是学生的名字,从第二个参数还是,是这个学生某个学科的得分
//变参:允许传入 不同个数,但是类型相同的参数
//Int*
//array 数组
def greet(name: String, score: Int*): Unit = {
var total: Double = 0
for (s <- score) {
total += s
}
val avg = total / score.length
println(s" 平均分是 ${name},平均分是${avg}")
}
def main(args: Array[String]): Unit = {
greet("小花", 90, 100, 98, 100, 95)
greet("小明", 80, 85)
greet("小张", 95)
}
}