Scala的高阶函数

        如果从网上找到一些基础教程,有java基础肯定学的很快。但是我看了几个教程里好像都没有scala的进阶教程。下面说一下scala中的高阶函数。

     几个重要的高阶函数有:值函数(作为值的函数),匿名函数,闭包,柯里化等

    首先值函数和匿名函数比较好理解,值函数就是把一个函数赋值给一个变量,然后这个变量代表这个函数在程序中传递。

  匿名函数就是,我们不用把函数赋值给变量,直接使用。

   for example:

     1     值函数:

               

      2  匿名函数

         

    左面表示输入参数名称、类型和个数,右边表示函数的实现和返回值类型和参数个数

    现在这两个概念应该一目了然了。这里面说一下val func1 = (x:Int) => x*2     ,func1是一个变量,“=”是赋值符号,把等号右边的赋值给左边的变量,  "=>"左面表示输入参数名称,参数类型和个数 ,右面是函数的实现和返回值类型和参数个数

         3 把方法转换成函数

           先定义一个方法,把方法转换成一个函数赋值给变量,方法后添加下划线“_”即可把方法转换成函数

         

  4 柯里化 

    柯里化从没名字来看无从下手,柯里化是这样的一个概念:把接收多个参数的函数改成接收一个参数的函数

  举例来看:

             第一步:把一个函数赋值给一个方法

               def m(x:Int) = (y:Int) =>x*y

           第二步:把传入值的方法赋值给一个定义的函数

           val func  = m(2)     //此时相当于 val func  = (y:Int) => 2*y

          第三步: 传入函数的参数

           func(3)

         

        可以看到第一个红框的地方显示m(2)是一个函数,可能会有疑惑,我定义的m不是一个方法吗,又没有使用下划线转换成

函数怎么就变成了一个函数呢?你可以把m(2)等价的理解成他的返回值,m(2)的返回值不就是一个函数吗,

  这样就能理解通了

             

              

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值