高阶函数(一)

35 阅读1分钟

高阶函数的定义

是一种特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。

常见高阶函数

Scala的常见高阶函数包括Array.map、flatten、flatmap、foreach、reduce、filter和fold等。

object z32 {
/*
 *高阶函数:是一种特殊的函数,它的参数,或者返回值是函数
 *
 *map:映射。把一个元素改成另一个元素
 */
  def main(args: Array[String]): Unit= {
  // 定义一个数组
    val arr = Array(1,2,3,4)
    val fn = (x:Int) => x * 2
    val arr1 = arr.map( fn )
    for(i <- arr1){
      println(i)
      }
    }
  }

map函数

map函数:通过对数组的每一个元素应用一个函数来构建一个新数组。

语法: 新数组 = 旧数组.map(旧元素=>新元素)

object z33 {
  def main(args: Array[String]): Unit= {
    // 定义一个数组
    val arr = Array(1,2,3,4)
    // 提问:把 arr 中每个元素都变成自己的 2 倍,并返回一个新数组?

//        val fn = (x:Int) => x * 2

    // Array 表示数组,map 就是它的方法。
    // map 就是一个高阶函数,它的参数是一个函数!
//    val arr1 = arr.map( fn )
    val arr1 = arr.map( x => x * 2 )

    for(i <- arr1){
      println(i)
    }
  }
}

练习

把(-1,2,-3,-4) → (1,2,3,4)

object z34 {
  def main(args: Array[String]): Unit= {
    // 定义一个数组
    val arr = Array(-1,2,-3,-4,5)
    // 提问:把 arr 中每个元素都变成自己的 2 倍,并返回一个新数组?
//    val fn = (x:Int) => x * 2
    // Array 表示数组,map 就是它的方法。
    // map 就是一个高阶函数,它的参数是一个函数!
 //   val arr1 = arr.map (fn)
    //val arr1 = arr.map ( x => x * x )
    val arr1 = arr.map ( x => if (x >= 0) x else -x ) //x 的绝对值

    for(i <- arr1) {
      println(i)
    }
  }
}