scala 柯里化(Currying)函数

首先看一个简单的案例:

//原函数	传入两个参数x,y  求和
def add(x:Int,y:Int)=x*y+y

//柯里化函数	每次传入一个参数,先传入x,再传入y	求和
def add1(x:Int)(y:Int)=x*y+y
//原函数调用
add(10,1)			//11
//柯里化函数调用
add1(10)(1)			//11

由此可见,柯里化函数就是把一次传入多个参数的函数拆分为每次都传入单个参数的函数,并且多次传入参。

那为什么add(x,y)变成add1(x)(y)就实现了柯里化呢?
函数柯里化(Currying):将原来接受多个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有函数的第二个参数为参数的函数。

add1(x)(y)怎么运作的?以add2函数做说明。

//实现创建add1的柯里化方法	传入第一个参数时返回函数类型,传入第二参数才返回计算值
  def add2(x:Int)={
    //新函数
    (y:Int)=>{
      x*y+y
    }
  }
add2(10)  //function
add2(10)(1)		//11

add2(x)返回的是一个函数,这个返回的函数参数是Int型,我们知道调用函数需要通过fun(参数)来实现,所以add2(x)(y)就是在add2(x)返回的新函数的基础上又传入参数y来调用新函数的。这就解释上面add1(x)(y)依次传入两个参数就实现柯里化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值