Scala开篇(目录)

  • Function1

    • andThen
    • compose
  • Function2
    • curried
    • tupled

Function1

带一个参数的方法,声明时,它需要两个泛型参数,第一个是传入的数据类型,第二个表示返回的数据类型,Function1是 trait ,它有一个apply方法,用来对输入参数进行处理了,使用Function1,必须实现apply接口

val funs = new Function1[Int,Int] {def apply(x:Int) = {x + 1}
}//使用
println(funs.apply(5))      // 6

andThen

和另一个Function1实例组合成一个新的Function1实例,当前这个方法先执行,执行完的结果作为另一个方法的入参

    val funs = new Function1[Int,Int] {def apply(x:Int) = {println("第一步:"+x)x + 1}}val succ = (x: Int) => {println("第二步:"+x)x + 3}println(succ.andThen(funs).apply(5))/**第二步:5第一步:8*/

compose

与andThen相反,同样是组合成新的Function1,但是作为参数的那个Function1先执行

//依然执行这个打印过程
println(succ.compose(funs).apply(5))
/**
第一步:5
第二步:6
*/

Function2

带两个参数的方法,它的声明需要三个泛型参数,前两个是入参类型,第三个是返回数据类型,同Function1一样,也要实现apply方法

val funs = new Function2[Int,Int,Int] {def apply(x:Int,y:Int) = {x + y}
}
println(funs.apply(1,2))    //  3

curried

为当前方法创建一个柯里化的版本

val funs = new Function2[Int,Int,Int] {def apply(x:Int,y:Int) = {x + y}
}
val curryfun = funs.curried
println(curryfun(1)(2))     //  3

tupled

为当前方法创建一个tupled(元组)版本

val funs = new Function2[Int,Int,Int] {def apply(x:Int,y:Int) = {x + y}
}
val tupledfun = funs.tupled
println(tupledfun((1,2)))

Scala:Function1、Function2相关推荐

  1. Scala学习笔记02:数据类型、常量与变量

    Scala学习笔记02:数据类型.常量与变量 一.数据类型 1.基本数据类型 Byte 字节型 Short 短整型 Int 整型 Long 长整型 Char 字符型 String 字符串 Float ...

  2. Scala基础教程(一):简介、环境安装

    Scala基础语法 如果有很好的了解Java语言,那么将很容易学习Scala. Scala和Java间的最大语法的区别在于;行结束符是可选的.考虑Scala程序它可以被定义为通过调用彼此方法进行通信的 ...

  3. Spark Streaming笔记整理(二):案例、SSC、数据源与自定义Receiver

    [TOC] 实时WordCount案例 主要是监听网络端口中的数据,并实时进行wc的计算. Java版 测试代码如下: package cn.xpleaf.bigdata.spark.java.str ...

  4. Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别

    Pig 一种操作hadoop的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了.当初雅虎自己慢慢退出pig的维护之后将它开源贡献到开源社区由所有爱好者来维护.不过现在还是有些公司在用,不过我 ...

  5. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

    为什么80%的码农都做不了架构师?>>>    kafka入门:简介.使用场景.设计原理.主要配置及集群搭建(转) 问题导读: 1.zookeeper在kafka的作用是什么? 2. ...

  6. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建--转载

    问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...

  7. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)

    问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...

  8. Java程序员需要掌握的计算机底层知识(三):进程、线程、纤程、中断

    面试高频问题 问:进程和线程有什么区别? 答:进程是一个程序运行起来的状态(运行态),线程是一个进程中不同的执行路径(线程只是其中一个). 更为专业的回答:进程是操作系统用来分配资源的基本单位,线程是 ...

  9. Scala go java_Java、Scala和Go语言多线程并发对比测试结果和结论

    AMD 双核 2.8G ,4G内存 winxp java+concjava+AKKA1.3java+AKKA2.0Scala+AKKA1.3Scala+AKKA2.0Go+goroutine 1-N ...

最新文章

  1. 一键安装python3环境
  2. 论电子计算机在审计中的应用,计算机技术在审计中的应用领域分析.doc
  3. Angular 依赖注入 useClass 的实例创建位置
  4. 中国移动云能力中心 Iaas 产品部软件开发工程师陈焱山:社区始于连接,也成就于连接...
  5. [ASP.NET AJAX]类似.NET框架的JavaScript扩展
  6. C语言学习笔记(2)
  7. Python风格总结:十进制转二进制、八进制、十六进制
  8. 微信小程序遇到的程序异步执行导致数据库读写异常的问题
  9. python%20是什么运算
  10. 新年计算机等级的决定的英语,新年决定英语对话及译文
  11. [Spring Boot 系列] 集成maven和Spring boot的profile功能
  12. android fastboot模式下载以及出现的问题
  13. 微信购物商城网站定制需要多少钱?电商网站建设开发方案(一)
  14. Chrome将网页背景变成黑色(真正的夜间模式、深色模式)
  15. CSDN博客成长记录
  16. SwiftUI实战教程 第三章 土豆List
  17. 去谷歌面试,竟让扔鸡蛋?
  18. hadoop 文本统计一个字符的个数_hadoop统计单词个数 - 卡饭网
  19. 业务中台、技术中台、数据中台、AI中台
  20. vscode中选中多行多光标进行操作及一些常用的命令(快捷键)

热门文章

  1. Eclipse基础设置
  2. laravel php resources,利用 Laravel Resources 来整合第三方 API 数据
  3. android网络通信之SOAP教程实例汇总
  4. pcm 8k单声道和双声道采样_音频接口PCM
  5. 10通信端口感叹号_工程现场通信总线布线、压接规范
  6. tebluea 仪表板如何联动_报告厅音响设备和辅助设备.doc
  7. 使用linux_Linux中VIM使用技巧
  8. python计算器基础知识_Python基础(一):将Python当做计算器、编程的第一步
  9. clojure java.jdbc_Clojure驱动的Web开发
  10. java swing 禁用鼠标事件_Java学习笔记:swing中树控件,设置树节点的图标,按钮美化,鼠标事件,禁止鼠标双击...