Scala函数作为参数传递

作用

  • 扩展函数的功能
  • 提高函数的灵活度

需求

                定义一个函数,传入数组类型的参数和一个函数,对数组中每个值分别进行运算后返回。

代码

// 函数类型的参数声明格式: 函数名: (参数类型) => 返回值类型
def fun(arr: Array[Int], op: (Int) => Int): Array[Int] = {
    
    
  for (elem <- arr) yield op(elem)
}

def addOne(x: Int): Int = {
    
    
  x + 1
}

// 一般方式调用
val res1: Array[Int] = fun(Array(1, 2, 3, 4, 5), addOne)
println(res1.mkString(","))

// 匿名函数方式调用   (参数列表) => {函数体}
val res2: Array[Int] = fun(Array(1, 2, 3, 4, 5), (x: Int) => {
    
    x + 1})
println(res2.mkString(","))

// 匿名函数简化
val res3: Array[Int] = fun(Array(1, 2, 3, 4, 5), x => x *2)
println(res3.mkString(","))

// 再简化
val res4: Array[Int] = fun(Array(1, 2, 3, 4, 5), _ * 3)
println(res4.mkString(","))

猜你喜欢

转载自blog.csdn.net/FlatTiger/article/details/114396379