zoukankan      html  css  js  c++  java
  • scala学习笔记(9)

    一、高阶函数

    ---------------------------------------------------

      1.作为值的函数:在Scala中,函数是头等公民,就和数字一样。

    import scala.math._
    val num =3.14
    val fun = ceil _   //这段话将num 设置为3.14 ,fun设置为ceil函数。ceil函数后的_意味着你确实指的是这个函数,而不是 碰巧忘记了给他传送参数
    scala>def add(a,b)=a+b
    scala>val f = add _          //这个语句的意思是,定义的变量f是一个函数类型的变量,给其赋值的函数是add()这个函数,将函数赋值给一个变量,变量是函数型变量

      对函数能够干什么呢?调用它以及传递它

    def multi(n:Int) = n * 2 
    
    val f = mult _                    //_ 表示取出函数本身
        
    Array(1,2,3,4).map(f)        //返回值  Array[Int] = Array(2,4,6,8 )        

      2.匿名函数

      在scala中,不需要给每一个函数来进行命名,正如不需要给每个数字命名一样,以下是一个匿名函数

    scala>(x:Double)->3*x      //将函数传递给它的参数乘3
    scala>val f = (n:Double)=>3 * n
    scala>Array(1,2,3,4).map((x)=>x*3);    //返回值Array[Int]=Array(3,6,9,12)
    scala>Array(1,2,4,5).map{(x)=>x*3}                        //也可以将函数参数包括在大括号中

    f1:add

    f2:sub

    //遍历数组值,输出元素值,每个元素平方返回

    call(a:Int,b:Int,f1..,f2..){
        if(a>0) ===> add
        if(a<=0) ===>
         return f1 / f2 ;     
    }

      call(1,2,fadd,sub)=3

      高阶函数:函数的参数或者返回值是函数 

    scala>def call(a:Int,b:Int,f1:(Int,Int)=>Int,f2:(Int,Int)=>Int)={
    
        ...............
        if(a>0){
          f1(a,b)
        }else{
        
          f2(a,b);
    }   }
    //第三个参数是两个整数输出一个整数,第四个也是两个整数输出一个整数
  • 相关阅读:
    【题解】国家集训队礼物(Lucas定理)
    【题解】佳佳的斐波那契数列(矩阵)
    【题解】Zap(莫比乌斯反演)
    HNOI2019爆零记
    Emacs配置
    【题解】Journeys(线段树优化连边)
    一直没有敢发的NOIP2018游记
    【题解】Digit Tree
    【题解】BZOJ3489 A Hard RMQ problem(主席树套主席树)
    【题解】大括号
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9685135.html
Copyright © 2011-2022 走看看