函数的基本应用

120 阅读4分钟

1. 函数的定义

函数是一段封装了特定功能的可重用代码块,用于完成某个具体任务。定义函数时需要指定函数名参数列表(可选)、返回值类型(可选,部分语言可自动推断)和函数体(实现功能的代码)。

(一)定义函数

格式:

object dfa16 {
 def max(x:Int,y:Int):Int = {
   if(x>y)
     x
   else
     y
 }

(三)函数规则

1.只有一行可以省略{}。当Scala的函数体中只有一行表达式时可以省略{},输出结果依然不变。

2.最后一条语句为函数的返回值。当函数体中有多个语句存在时,返回最后一条语句的值。

3.函数的返回类型可以省略。它会自动推断。

4.函数没有形参,在定义函数时可以省略(),那么在调用函数时也不需要添加()

编码示例:

def getMax(x: Int, y: Int): Int = {  
  if (x > y)  
    x  
  else  
    y

}

以 Scala 为例,函数定义的基本格式:

def 函数名(参数名1: 参数类型1, 参数名2: 参数类型2, ...): 返回值类型 = {
  // 函数体(实现逻辑)
  // 最后一行表达式的结果会自动作为返回值(无需显式return,除非需要提前返回)
}

例如:

// 定义一个求三个整数最大值的函数
def max(x: Int, y: Int, z: Int): Int = {
  val temp = if (x > y) x else y
  if (temp > z) temp else z
}

2. 函数的调用

函数定义后,通过函数名 + 实际参数列表即可调用,执行函数体内的逻辑并获取结果(若有返回值)。

函数名(实际参数1, 实际参数2, ...)

例如:

// 调用上述max函数,传入实际参数100、20、200
val result = max(100, 20, 200) 
println(result) // 输出:200

(二)函数调用

[格式]:返回值=函数(参数)

def getSum(x:Int, y:Int): Int = {

     x + y

}  
val s = getSum(10,20)  
printf(s)

注意

  • 实际参数的类型和数量需与函数定义的参数列表匹配(类型不匹配会编译报错)。
  • 若函数无参数,调用时可省略括号(如 def hello(): Unit = println("hi") 可通过 hello 或 hello() 调用)。

3. 函数的返回值

函数执行完成后返回的结果称为返回值,其类型由函数定义时指定(或自动推断)。

特点:

  1. 返回值类型:在函数定义的 : 后指定(如 : Int 表示返回整数)。若函数无返回值,通常用 Unit 表示(类似 Java 的 void)。
def printHello(): Unit = {
  println("Hello") // 无返回值,返回类型为Unit
}

  1. 返回值的确定
  • 多数函数式语言(如 Scala)中,函数体最后一行表达式的结果会自动作为返回值,无需显式使用 return
  • 若需提前返回(如满足某个条件时退出),可使用 return 关键字,此时需显式指定返回值类型。
def abs(n: Int): Int = {
  if (n >= 0) return n // 提前返回
  -n // 最后一行作为返回值
}
  1. 返回值的使用:调用函数后,返回值可被赋值给变量、作为其他函数的参数或直接使用。
val a = 5
val b = 3
val sum = a + b // 函数调用的返回值参与运算
println(sum) // 输出:8

[问] 如何改造上面的代码,让函数返回最大值和最小值数据?

println → 改写()

// 定义一个函数,计算三个数中的最大值和最小值  
  def getMaxAndMin(x: Int, y: Int, z: Int)= {  
    // 在函数中,返回多个值!  
    var max = x // 假设最大值为x  
    if(y > max) max = y  
    if(z > max) max = z  
//    println(s"最大值为: $max")  
    var min = x // 假设最小值为x  
    if(y < min) min = y  
    if(z < min) min = z
    //    println(s"最小值为: $min")  
    // 同时返回最大,最小值  
    // 元组  
    (min,max)  
  }

练习

(五)元组: 元组表示不同类型值的集合,即元组可以用于存放不同类型的元素,例如可以存放整型、字符串、浮点型、自定义类型等等。Scala的元组类型可以使方法同时返回多个值,省略了中间部分的解析和集合的遍历。

定义 元组:

第一种表示方式为:(元素1,元素2,…元素N)

第二种表示方式为:new TupleN(元素1,元素2,…元素N)。N最大为22 访问元组****

元组通过Tuple_INDEX的方式访问元组中的元素,Tuple表示元组,INDEX表示索引。

t = new Tuple2(1,2); println(t._1, t._2)