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);
}   }
//第三个参数是两个整数输出一个整数,第四个也是两个整数输出一个整数

 

posted @ 2018-09-21 10:17  stone1234567890  阅读(125)  评论(0编辑  收藏  举报