scala进阶函数(二)

29 阅读2分钟

目标

  • 函数字面量;

  • 部分应用函数

格式

定义函数的方式一:

def getSum1=(x:Int,y:Int)=>{
  x+y
}

定义函数的方式二:字面量

val getSum1=(x:Int,y:Int)=>{
  x+y
}

Scala的函数字面量的简化方式有两种方式:

  1. _(占位符)。如果函数中的参数在方法体中只使用了一次,可以用_替换。
  2. 只有一个表达式时,可以省略括号。
val sum1 = (x:Int, y:Int) =>{x+y}  
val sum2 = (x:Int, y:Int) => x+y  
val sum3:(Int, Int)=>Int = _ + _  
val sum4 = (_: Int) + (_: Int)
//省略{}
val getSum1 =(x:Int,y:Int)=>x+y
//使用_来替代形参
val getSum2 =(_:Int)+(_:Int)
//使用_来替代形参.(Int,Int就是getSum3的类型)
val getSum3::(Int,Int)=>Int=_+_

把一个函数,当做参数,传递给另一个函数


     * 把一个函数 当做参数 传递给另一个函数
     */
    // 定义两个字面量函数。(Int, Int) => Int 看成一种数据类型
    val f1: (Int, Int) => Int = _ + _
    // val a:Int = 1
    val f2: (Int, Int) => Int = _ * _

    // 定义一个函数,它有三个参数
    // 参数1: 类型是 (Int,Int)=>Int 。它表示这里需要一个函数
    def test(fn: (Int, Int) => Int, x: Int, y: Int): Int = {
      fn(x, y)
    }

    def main(args: Array[String]): Unit = {
      println(test(f1, 10, 20)) ==== f1(10,20)
      println(test(f2, 10, 20))
    }

}
     * 把一个函数 当做参数 传递给另一个函数
     */
    // 定义两个字面量函数。(Int, Int) => Int 看成一种数据类型
    val f1: (Int, Int) => Int = _ + _
    // val a:Int = 1
    val f2: (Int, Int) => Int = _ * _

    // 定义一个函数,它有三个参数
    // 参数1: 类型是 (Int,Int)=>Int 。它表示这里需要一个函数
    def test(fn: (Int, Int) => Int, x: Int, y: Int): Int = {
      fn(x, y)
    }

    def main(args: Array[String]): Unit = {
      println(test(f1, 10, 20)) ==== f1(10,20)
      println(test(f2, 10, 20))
    }

}

Snipaste_2025-10-21_09-20-11.png

部分应用函数

如果一个函数需要3个参数,而我们只给了2个参数,会怎么样?

def getSum(a: Int, b: Int, c: Int): Int = {
  a + b + c
}

def main(args: Array[String]): Unit = {
  println(getSum(10, 20, 30))
  
  val t = getSum(10, 20, _)//t就是部分应用函数!
  val t1 = getSum(_, 20, _)//t就是部分应用函数!
  
  println(t(60))
  println(t1(20, 50))
}
  • 完结撒花 !!!!!!!!!!
  • 制作不易 希望·一键三连 在此感谢关注的粉丝宝宝
  • 新来的宝宝可以关注下主播哟!!!!!