Scala深入浅出实战经典:23,Scala高阶函数实战详解

package com.dt.scalaInAction.demo_023

/**
 * Scala高阶函数实战详解
 */
object HighOrderFunctions {
    def main(args: Array[String]): Unit = {
        //1 打印阶梯状的*号
//        1.to(9).map("*" * _).foreach(println)
      
        //2 过滤1~9中的偶数
//        1.to(9).filter(_ % 2 == 0).foreach(println _)  //row result: 2 4 6 8
        
        //3 9*8*7*6*...*1
//        println((1 to 9).reduceLeft(_ * _))  
      
        //4 按单词的长度升序排列
        /*
        "Spark is the most exciting thing happening in big data today"
             .split(" ")
             .sortWith(_.length < _.length)
             .foreach(println)
        */
      
        //5
        /*
        val fun = ceil _
        val num = 3.14
        fun(num)
        Array(3.14, 1.42, 2.0).map(fun)
        */
      
        //6
//        val triple = (x: Double) => 3 * x
//        Array(3.14, 1.42, 2.0).map((x: Double) => 3 * x).foreach(println)    //row result: 9.42 4.26 6.0
//        Array(3.14, 1.42, 2.0).map{  (x: Double) => 3 * x }.foreach(println) //row result: 9.42 4.26 6.0
        
        //7 高阶函数标准的定义方式   f: (Double) => Double   函数作为的参数类型定义  (参数值类型...) => 返回值类型
        def high_order_functions(f: (Double) => Double) = f(0.25)
//        println(high_order_functions(ceil _))
//        println(high_order_functions(sqrt _))
      
        //8   (x: Double)才是正真执行所要传入的参数
        def mulBy(factor: Double) = (x: Double) => factor * x
        val quintuple = mulBy(5)
        println(quintuple(20))   //执行时 x=20     row result: 100.0
        
        
        //9 高阶函数的简化写法推导
        println(high_order_functions((x: Double) => 3 * x))   //row result: 0.75
        high_order_functions((x) => 3 * x )
        high_order_functions(x => 3 * x )
        high_order_functions(3 * _)
        
        val fun2 = 3 * (_: Double)
        val funn3:(Double) => Double = 3 * _   //_为返回类型(Double) => Double中的参数类型
    }
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值