Scala函数的基本使用

45 阅读2分钟

定义函数

格式如下:


  //定义一个函数
  // 功能:求两个数的较大者
//  格式:
//   1. 有一个 =
//   2. 返回值类型
//     函数内的最后一个表达式或者语句的值 就是函数的返回值
//     Unit 表示没有返回值 调用这个函数 不会接收到任何的处理结果
  def max(x:Int , y:Int) ={
     val t = if (x > y) x else y
     t //就是返回值
  }

注意:

  • 如果一函数不需要参数 可以省略()
  • 函数内的最后一个表达式或者语句的值 就是函数的返回值
  • Unit 表示没有返回值 调用这个函数 不会接收到任何的处理结果
def say():Unit ={
  println("hahahaha~~~~~")
}
  • 调用一个没有()的函数 也不要加()
  def main(args: Array[String]): Unit = {
    val rst =max(1,100)

    println(s"${rst}")

例题1:求三个数中最大值?

解题如下:

  // 法一:三选一
  def max(x:Int , y:Int ,z:Int) = {
    if (x >= y && x >= z) {
      x
    } else if (y >= x && y >= z) {
      y
    } 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}")
}

例题2:求三个数中最大值和最小值?

注意:函数需要返回多个值 把要放回的数据使用()包在一起 成为一个整体

解题如下:

object a1013 {
//  定义一个函数
//  功能:求三个数中最大值和最小值
//  注意:函数需要返回多个值 把要放回的数据使用()包在一起 成为一个整体

  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)

    (minValue, maxValue) // 是一个整体
  }

  def main(args: Array[String]): Unit = {
    val rst =max(1000,200,100)
    println(s"最小值是:${rst._1},最大值是:${rst._2}")

   }
         }

函数调用和规则

  • 函数调用

返回值 = 函数(参数列表)

  • 函数规则

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

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

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

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

元组

元组的定义:表示不同类型值的集合,即元组可以用于存放不同类型的元素,例如可以存放整型、字符串、浮点型、自定义类型等等。

1.定义一个元组 使用()把数据包起来 就可以了

2.取出元素 通过 ._数字序号 来访问

如下:

  def main(args: Array[String]): Unit = {
// 元组 :容器 可以装入不同的数据类型的数据
// 1.定义一个元组 使用()把数据包起来 就可以了
    val t = (1,"luzhang" false,0
// 2.取出元素 通过 ._数字序号 来访问
  //取出 1.2
  println(t._3)
   //取出luzhang
   println(t._2)