博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每天学一点Scala之 Currying函数
阅读量:6450 次
发布时间:2019-06-23

本文共 751 字,大约阅读时间需要 2 分钟。

1、Curring函数 定义?

    将原来接收两个参数的一个函数,转换为两个函数,第一个函数接收原先的第一个参数,然后返回接收原先第二个参数的第二个函数。

在函数调用的过程中,就变为了两个函数连续调用的形式

在marathon源码以及Spark的源码中,也有体现,所以对()()这种形式的Curring函数,要理解。

2、例子:

1
2
3
4
5
6
7
8
9
10
11
12
object 
CurryingTest {
   
def 
main(args
: 
Array[String])
: 
Unit 
= 
{
      
println(
"---->:\t" 
+ sum(
3
,
4
))
      
println(
"---->:\t" 
+ sum
2
(
5
))
      
println(
"---->:\t" 
+ sum
2
(
5
)(
1
))
      
// 柯里函数
      
println(
"---->:\t" 
+ sum
3
(
4
)(
8
))
   
}
   
def 
sum(a
: 
Int, b
: 
Int) 
= 
a + b
   
def 
sum
2
(a
: 
Int) 
= 
(b
: 
Int) 
=
> a + b  
// 由sum函数转换成sum3函数时的中间过程
   
def 
sum
3
(a
: 
Int)(b
: 
Int) 
= 
a + b
}

其实,柯里函数到底用在什么场景下,并没有真正理解。

目前,仅仅是,只要看到

1
sum
3
(a
: 
Int)(b
: 
Int) 
= 
a + b

这种形式,可以直接理解成 或者等价于 

1
sum(a
: 
Int, b
: 
Int) 
= 
a + b

形式

本文转自故新51CTO博客,原文链接:http://blog.51cto.com/xingej/1963456 ,如需转载请自行联系原作者

你可能感兴趣的文章
看 nova-scheduler 如何选择计算节点 - 每天5分钟玩转 OpenStack(27)
查看>>
修改默认ssh端口
查看>>
使用CocoaPods管理iOS的第三方类库
查看>>
Go 性能优化技巧 6/10
查看>>
Spring @Async
查看>>
Python 函数
查看>>
制作自己的Winpe镜像(3):Wim镜像捕获及Wim镜像应用
查看>>
Java参数传递方式?
查看>>
我的友情链接
查看>>
设计模式之——适配器模式详解
查看>>
Spring Data JPA 简单介绍
查看>>
JavaScript入门
查看>>
jsp内置对象之 resquest
查看>>
meteor-angular优化启动
查看>>
springboot 系列教程十:springboot单元测试
查看>>
地图中画线(添加遮盖物)方法
查看>>
Web前端规范--通用规范
查看>>
多线程问题及处理方法【转】
查看>>
Sublime for Python
查看>>
Ubuntu10.04.4 Server下基于LVS DR模式+Keepalived的负载均衡高可用
查看>>