Scala函数,你真的明白了吗

42 阅读2分钟
  1. 函数max的设计

    • 目的是返回三个整数的最大值和最小值,返回类型为元组(Int, Int)
    • 首先通过两次比较计算最大值
  2. 主方法main

    • 调用max(1000, 200, 100)并接收返回的元组
    • 通过_1_2访问元组中的最小值和最大值
// 定义一个函数
// 功能:求三个数的最大值和最小值。
// 注意:函数需要返回多个值:把要返回的数据使用()包在一起,成为一个整体
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) x else y
  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}")
}

1. 函数定义:greet 函数

  • 功能:打印一句包含姓名、年龄、性别的自我介绍。

  • 参数特点:所有参数都设置了默认值(这是核心):

  • 返回值类型Unit(表示无返回值,类似 Java 中的void

2. 主方法 main:调用 greet 函数的多种方式

main 方法是程序入口,通过不同传参方式调用greet,展示了 Scala 中参数传递的灵活性:

(1)greet("小花", 18)

  • 按参数顺序传递前两个参数(name="小花"age=18),第三个参数gender未传递,使用默认值 “女”。
  • 输出:我是小花,我今年18,女

(2)greet("小明", 20, "男")

  • 按顺序传递所有三个参数,覆盖默认值。
  • 输出:我是小明,我今年20,男

(3)greet()

  • 不传递任何参数,所有参数都使用默认值(name="哈哈"age=18gender="女"

(4)greet(age=20)

  • 使用命名参数(指定参数名age),只传递age=20,其他参数(namegender)使用默认值

(5)greet(gender = "男", age=20)

  • 混合使用命名参数,且参数顺序可以和定义时不同(先传gender,再传age),未指定的name使用默认值 “哈哈”
// 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 )
}