函数

27 阅读1分钟

#函数字面量 另一种定义函数的方式#

 //定义函数的方式一:def
  def getSum(x:Int,y:Int):Int = {
    X + Y
  }

  //定义函数的方式二:字面量
  val getSum(x:Int,y:Int):Int = > {
    x + Y
  }


  def main(args:Array[String]): Unit={
    println(getSum(10,20))

  }

}

#``` 函数字面里的简化写法 ``

object day102102 {
  /*
  *函数字面里的简化写法
  * 1.代码只有一句,省略 {}
  * 2. _占位符来替代形参
   */
//
  val getSum(x:Int,y:Int):Int = {
    X + Y
  }

 //省略{}
 val getSum(x:Int,y:Int):Int => X + Y


 //使用 _ 来代替形参
 val getSum2(_:Int,_:Int):Int


//  使用 _ 来代替形参,(Int,Int)=>Int就是getSum3的类型
val getSum3:(IntInt)=>Int = _+_

  def main(args:Array[String]): Unit= {
    println(getSum(10,20))
    println(getSum1(10,20))
    println(getSum2(10,20))
    println(getSum3(10,20))
  }
}

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

定义两个字面量函数。(Int,Int => Int看成一种数据类型

val f1:(Int,Int)=> Int = _+_
// val a:Int

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))
  println(test(f2,10,20))
}