`
agile_boy
  • 浏览: 556611 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Scala的Partial Function和Curry

    博客分类:
  • fp
阅读更多
  • Partial Function

  说白了,就是不需要全部参数的函数,通常用来做变量或者别的函数的参数使用,比如:
def concatUpper(s1: String, s2: String): String = (s1 + " " + s2).toUpperCase
 val c = concatUpper _
println(c("short", "pants")) 
val c2 = concatUpper("short", _: String)
println(c2("pants"))
(from Oreilly.Programming.Scala)
这么做可以很好的复用函数(类似Groovy的Curry,实际上Scala也有Curry,他们做相似的事情)。

  • Curry

   就是将函数的多个参数,拆成一个函数链,比如:
ddef multiplier(i: Int)(factor: Int) = i * factor 
val byFive = multiplier(5) _ 
val byTen = multiplier(10) _

从示例可以看出,除了函数定义差异外,在用法上,跟Partial Funcation无二异。

实际上,他们确实是做类似的事情,只是语法不一样,如果那位知道这两者更精细的应用场景,请多指教。
分享到:
评论

相关推荐

    scala_function.sh

    scala_function.sh

    jacksu#utils4s#偏函数(PartialFunction)、偏应用函数(Partial Applied Functi

    scala中用scala.PartialFunction[-T, +S]类来表示scala可以通过模式匹配来定义偏函数, 下面这两种方式定义的函数, 都可以认为

    function programming in scala 英文原版 scala函数式编程

    英文原版 scala函数式编程 function programming in scala

    Scala安装包和kafka安装包

    Scala是一种强大的、面向对象的编程语言,它集成了函数式编程的特点,被广泛应用于大数据处理和分布式计算领域。Kafka是Apache基金会开发的一款开源流处理平台,它最初由LinkedIn设计并贡献,现在已经成为大数据生态...

    scala sdk scala-2.12.3

    Scala是一种多范式的编程语言,融合了面向对象和函数式编程的特点,它运行在Java虚拟机(JVM)上,能够充分利用Java生态系统的资源。Scala-2.12.3是Scala的一个特定版本,它包含了对Java 8及更高版本的支持,并提供...

    scala3 scala3 scala3 scala3 scala3

    Scala3,也被称为Scala 3或Dotty,是Scala编程语言的一个重大更新,旨在提高其简洁性、可读性和类型安全性。Scala3的发布标志着该语言的进一步成熟,它引入了一系列改进,旨在解决早期版本中的一些痛点,同时保持对...

    Scala和Spark大数据分析函数式编程、数据流和机器学习

    Scala和Spark是大数据分析领域中的两个重要工具,它们在处理大规模数据时表现出强大的性能和灵活性。Scala是一种静态类型的函数式编程语言,而Spark是一个分布式计算框架,尤其适合于大数据处理和分析。本教程将深入...

    面向Java开发人员Scala指南,Scala和servlet的比较

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,为Java开发者提供了一种更高效、更简洁的编程选择。在Java开发领域,Servlet是用于构建Web应用程序的标准API,广泛应用于服务器端编程。本...

    Scala 2.11-API.chm

    `PartialFunction` 是只处理一部分输入的函数,常用于模式匹配。 对于并发编程,Scala的`Actor`系统是基于消息传递的并发模型,允许开发者以简单且安全的方式处理并发问题。`Future` 是异步计算的结果,它可以与`...

    curryhoward:通过Curry-Howard同构为Scala函数和表达式自动生成代码

    在这个项目"curryhoward"中,开发者利用了Curry-Howard同构来为Scala函数和表达式自动生成代码。这使得程序员可以通过定义逻辑规则来构建和验证程序,从而提高代码的正确性和可读性。 Lambda演算是一种无类型的函数...

    scala2.12.1Windows镜像包

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala2.12.1Windows镜像包"是为Windows操作系统设计的Scala编程环境的安装包,版本号为2.12.1。Scala 2.12.x系列是其重要的一个稳定...

    scala + mybatis 数据库查询

    Scala是一种强大的多范式编程语言,它结合了面向对象和函数式编程的特性。MyBatis则是一款流行的Java持久层框架,主要用于简化数据库操作。在本项目中,"scala + mybatis 数据库查询",我们将探讨如何将Scala与...

    Scala编程完整版

    高阶函数、闭包、柯里化(currying)和部分应用函数(partial function application)都是其核心功能。另外,Scala还提供了强大的集合库,支持链式操作和函数组合,这些都是函数式编程的重要工具。 **4. 类型系统**...

    scala-2.12.10.zip

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala-2.12.10.zip"文件是Scala编程语言的特定版本——2.12.10,专为Windows操作系统设计的安装包。Scala 2.12.x系列是该语言的一个...

    scala实战高清讲解

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,使得它在处理并发和大数据分析方面表现出色。"Scala实战高清讲解"这本书是学习Scala的宝贵资源,尤其对于那些希望深入理解并提升Scala技能的...

    最好的scala学习 课件

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理领域,特别是与Apache Spark相结合时。本课件是针对Scala学习者精心准备的资源,旨在帮助你深入理解和掌握Scala的...

    Scala 书籍资料

    在函数式编程方面,资料可能涵盖函数组合、柯里化(Currying)、高阶函数和偏函数(Partial Function)。函数式编程强调无副作用,这在编写可测试和可维护的代码时非常有价值。 对于并发编程,Scala的Actor模型提供...

    快学Scala课后习题答案

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。"快学Scala"可能是一个针对初学者的教程或课程,旨在帮助学习者迅速掌握这门语言的基础和高级特性。课后习题是检验学习效果、加深理解的重要...

    Scala考试题1

    Scala 是一种多范式的编程语言,它融合了面向对象和函数式编程的特性。下面将详细解释题目中涉及的Scala知识点: 1. **var、val 和 def 的区别**: - `var` 定义可变变量,可以多次赋值。 - `val` 定义不可变变量...

Global site tag (gtag.js) - Google Analytics