scala基础26-高阶函数

本文通过实例演示了Scala中的高阶函数使用技巧,包括map、filter、reduceLeft等方法的应用,以及自定义排序和数学运算函数。展示了如何利用匿名函数简化代码,并介绍了高阶函数在实际开发中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import scala.math._

object Test {

  def main(args: Array[String]): Unit = {
    //map迭代集合中的每一个元素,map的参数是一个函数(作为参数的函数又名高阶函数)
    (1 to 9).map("*" * _).foreach(println)
    (1 to 9).filter(_ % 2 == 0).foreach(println)

    //reduceLeft: 首先应用于前两个元素,然后再应用于第一次应用的结果和接下去的一个元素,直至整个列表
    println((1 to 3).reduceLeft(_ * _))

    //sortWith:自定义排序算法
    "Spark is the most exciting thing happening in big data tody".split(" ").sortWith((a, b) => a > b).foreach(println)

    //ceil:向上取整函数
    val fun = ceil _
    val num = 3.14
    println(fun(num)) //4.0

    Array(3.14, 1.44, 2.0).map(fun).foreach(println)

    //右侧是一个匿名函数,参数为x
    val triple = (x: Double) => 3 * x
    //两种不同的写法
    Array(3.14, 1.44, 2.0).map((x: Double) => 3 * x).foreach(println)
    Array(3.14, 1.44, 2.0).map{(x: Double) => 3 * x}

    //标准定高阶函数,如下,参数是一个函数,参数是Double类型,返回值也是Double类型
    def high_order_func(f: (Double) => Double) = f(1.25)
    println(high_order_func(ceil))
    println(high_order_func(sqrt)) //sqrt开平方

    def mulBy(factor: Double) = (x: Double) => factor * x
    val quintuple = mulBy(5)
    println(quintuple(20))

    //逐步变简的写法
    println(high_order_func((x: Double) => 3 * x))
    println(high_order_func((x) => 3 * x))
    println(high_order_func(x => 3 * x))
    println(high_order_func(3 * _))

    //括号()中的是参数
    val fun2 = 3 * (_: Double)
    val fun3: (Double) => Double = 3 * _

    println(fun2(2.2))
    println(fun3(2))
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值