大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要讲解了“Scala柯里化是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala柯里化是什么”吧!
为坡头等地区用户提供了全套网页设计制作服务,及坡头网站建设行业解决方案。主营业务为网站制作、做网站、坡头网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
下面先给出一个普通的非柯里化的函数定义,实现一个加法函数:
scala> def plainOldSum(x:Int,y:Int) = x + y
plainOldSum: (x: Int, y: Int)Int
scala> plainOldSum(1,2)
res0: Int = 3
使用“柯里化”技术,把函数定义为多个参数列表:
scala> def curriedSum(x:Int)(y:Int) = x + y
curriedSum: (x: Int)(y: Int)Int
scala> curriedSum (1)(2)
res0: Int = 3
当你调用 curriedSum (1)(2)时,实际上是依次调用两个普通函数(非柯里化函数),第一次调用使用一个参数 x,返回一个函数类型的值,第二次使用参数y调用这个函数类型的值,我们使用下面两个分开的定义在模拟 curriedSum 柯里化函数:
首先定义第一个函数:
scala> def first(x:Int) = (y:Int) => x + y
first: (x: Int)Int => Int
然后我们使用参数1调用这个函数来生成第二个函数。
scala> val second=first(1)
second: Int => Int =
scala> second(2)
res1: Int = 3
first,second的定义演示了柯里化函数的调用过程,它们本身和 curriedSum 没有任何关系,但是我们可以使用 curriedSum 来定义 second,如下:
scala> val >
onePlus: Int => Int =
下划线“_” 作为第二参数列表的占位符, 这个定义的返回值为一个函数,当调用时会给调用的参数加一。
scala> onePlus(2)
res2: Int = 3
通过柯里化,你还可以定义多个类似 onePlus 的函数,比如 twoPlus
scala> val twoPlus = curriedSum(2) _
twoPlus: Int => Int =
scala> twoPlus(2)
res3: Int = 4
感谢各位的阅读,以上就是“Scala柯里化是什么”的内容了,经过本文的学习后,相信大家对Scala柯里化是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!