一:定义函数的方法
函数的字面量语法
除了使用def之外的,另一种定义函数的方式
语法:var 变量 = (参数列表)=>{方法体}
它省略了def,函数名以及函数的返回值类型。
scala
体验AI代码助手
代码解读
复制代码
* 另一种定义函数的方法
*/
def getSum(x:Int, y:Int): Int = {
x + y
}
// 定义函数的方式2:字面量
val getSum1 = (x:Int, y:Int) => {
x + y
}
def main(args: Array[String]): Unit = {
println( getSum(10,20))
println( getSum1(10,20))
}
(1)简化方式
Scala的函数字面量的简化方式有两种方式:
scala
体验AI代码助手
代码解读
复制代码
/*
* 1.函数字面量简化写法
* 2,_占位符来替换形参
*/
val getSum =(x:Int, y:Int) => {
x + y
}
// 省略 {}
val getSum1 = (x:Int, y:Int) => x + y
// 使用_来代替形参
val getSum2 = (_:Int,_:Int)
// 使用_来代替形参。(Int,Int)→
val getSum3:(Int, Int)=>Int = _ + _
def main(args: Array[String]): Unit = {
println( getSum(10,20))
println( getSum1(10,20))
println( getSum2(10,20))
println( getSum3(10,20))
}
二:把函数作为参数
kotlin
体验AI代码助手
代码解读
复制代码
/*
* 把一个函数当做参数,传递给另一个函数
*/
// 定义两个字面量函数。(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))
}
三:部分应用函数
如果一个函数包含多个参数,对该函数传递部分参数使得这个函数返回一个函数,那么这种函数叫做部分应用函数。
scala
体验AI代码助手
代码解读
复制代码
/*
* 部分应用函数
*
* 如果一个函数需要三个参数,我们只给两个参数,会怎样?
*/
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(50))
四:高阶函数
高阶函数:是一种特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。
(1)map函数
scala
体验AI代码助手
代码解读
复制代码
* 1.map函数 对数组中每个元素执行一个函数,来得到一个新数组
*/
def main(args: Array[String]): Unit = {
val arr1 = Array(1,2,3,4,5,6)
// Array是一个构造器,用来定义一个数组
// arr1就是一个数组对象,他有很多方法,其中就有map
// for 循环来输出数组中每个元素
val fn = (x:Int) => x * 2
// fn是一个函数,他传输了map,map是一个高阶函数
val arr2 = arr1.map(fn)
// for 循环来输出数组中每个元素
for(i <- arr2){
println(i)