浅谈scala:什么是函数柯里化?

什么是函数柯里化?

最直接的说法:
函数柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

这个解释看上去有些难懂,下面让我们来举一个例子:
在这里插入图片描述
在java中我们可以定义这样一个简单的求和函数:

public int fun(int a,int b){
        return a+b;
    }

即使是java初学者也会知道:如果要调用这个函数,必须输入a和b两个int型的参数,缺一不可。否则就会报错。

但是在scala中,我们可以这样定义:

def fun1(a:Int)(b:Int):Int={
      a+b
    }

可以看到这里把a和b分别放在两个不同的括号里,但实现的功能好像也只是相加而已,并没有什么特别之处。
别急,接着看:

def fun2=fun1(1)(_)
val num1:Int=fun2(1)
println(num1)

运行结果:
在这里插入图片描述
这里可以看到:调用fun1方法时,直往里面放了一个实参"1",第二个参数用"_“表示空缺,然后就返回了一个新的函数fun2。
再调用fun2放入第二个实参"1”,然后才返回了"1+1"的结果。

所以,再调用fun1时如果没有把参数输入完整,不会报错,而是返回一个新的函数。
这也就是函数柯里化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala中,函数是一等公民,可以作为参数传递和返回值。Scala也支持许多高级函数特性,包括柯里化函数和隐式函数。 1. 柯里化函数 柯里化函数是将多个参数的函数转换成一系列单参数函数的过程。例如,一个接受两个参数的函数可以被柯里化为两个单参数函数。 ```scala def add(x: Int, y: Int) = x + y // 柯里化函数 def addCurried(x: Int)(y: Int) = x + y ``` 在柯里化函数中,每个参数都是一个单独的函数参数列表。这样做有助于提高代码的可读性和重用性。 2. 隐式函数 隐式函数是一种特殊类型的函数,它可以将一个类型转换为另一个类型。这种转换是在编译时自动完成的,而不需要显式调用函数。 ```scala // 定义一个隐式函数将Int类型转换成String类型 implicit def intToString(i: Int): String = i.toString // 使用隐式函数将Int类型转换成String类型 val s: String = 42 ``` 在上面的例子中,当将一个Int类型的值赋给一个String类型的变量时,编译器会自动调用intToString函数,将Int类型转换成String类型。 除了类型转换,隐式函数还可以用于隐式参数和隐式类。隐式参数是一种特殊类型的函数参数,它可以在函数调用时自动提供。隐式类是一种特殊类型的类,它可以在需要时自动转换成其他类型。 Scala中的函数是非常强大和灵活的,柯里化函数和隐式函数是其中两个重要的特性。它们可以提高代码的可读性、重用性和灵活性,使程序开发更加高效和简洁。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值