第25讲: Scala中柯里化实战详解
2016-02-14 13:26
489 查看
柯里化是将原来需要多个参数的函数,转换成只需一个参数(第一个参数),并且函数的返回值是一个函数,该函数的参数是原函数的除第一个参数以外的参数。
我们来看如下例子:
接收一个函数,返回带一个参数的函数。
我们调用一个mulOne函数
要求2*3则调用
柯里化函数也可用如下方法直接定义
看一个经典的例子
corresponds 方法既用了柯里化方式定义的函数,函数声明如下
我们来看如下例子:
def mul(x : Int , y : Int) = x * y定义了一个乘法运算的函数,我们在定义一个函数
def mulOne(x : Int) = (y : Int ) => x * y该函数就是mul的柯里化函数
接收一个函数,返回带一个参数的函数。
我们调用一个mulOne函数
scala> mulOne(2) res0: Int => Int = <function1> scala>mulOne(2) 返回的是一个函数。
要求2*3则调用
scala> val f = mulOne(2) f: Int => Int = <function1> scala> f(3) res2: Int = 6或者
scala> mulOne(2)(3) res1: Int = 6
柯里化函数也可用如下方法直接定义
def curring(x : Int)(y : Int) = x * y调用方法:
scala> curring(3)(4) res3: Int = 12
看一个经典的例子
val a = Array("hello","world") val b = Array("Hello","World") println(a.corresponds(b)(_.equalsIgnoreCase(_)))
corresponds 方法既用了柯里化方式定义的函数,函数声明如下
def corresponds[B](that: GenSeq[B])(p: (A,B) => Boolean): Boolean
相关文章推荐
- Windows下Scala环境搭建
- Windows7下安装Scala 2.9.2教程
- Scala代码实现列出Hadoop 文件夹下面的所有文件
- ClassNotFoundException:scala.PreDef$
- sbt创建web项目
- XML 文件解析--含Unicode字符的XML文件
- 分分钟掌握快速排序(Java / Scala 实现)
- Scala极速入门
- Spark初探
- Scala实现REST操作
- Scala method call syntax
- 关于Scala多重继承的菱形问题
- Scala 高阶函数(high-order function)剖析
- Scala Monad Design Pattern
- Spray.io搭建Rest服务
- Spray.io搭建Rest — 支持Twirl模板并部署
- 搭建hadoop/spark集群环境
- Akka (actors) remote example
- scala工具库
- scala-协变、逆变、上界、下界