Scala:Function1、Function2
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相关推荐
- Scala学习笔记02:数据类型、常量与变量
Scala学习笔记02:数据类型.常量与变量 一.数据类型 1.基本数据类型 Byte 字节型 Short 短整型 Int 整型 Long 长整型 Char 字符型 String 字符串 Float ...
- Scala基础教程(一):简介、环境安装
Scala基础语法 如果有很好的了解Java语言,那么将很容易学习Scala. Scala和Java间的最大语法的区别在于;行结束符是可选的.考虑Scala程序它可以被定义为通过调用彼此方法进行通信的 ...
- Spark Streaming笔记整理(二):案例、SSC、数据源与自定义Receiver
[TOC] 实时WordCount案例 主要是监听网络端口中的数据,并实时进行wc的计算. Java版 测试代码如下: package cn.xpleaf.bigdata.spark.java.str ...
- Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
Pig 一种操作hadoop的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了.当初雅虎自己慢慢退出pig的维护之后将它开源贡献到开源社区由所有爱好者来维护.不过现在还是有些公司在用,不过我 ...
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
为什么80%的码农都做不了架构师?>>> kafka入门:简介.使用场景.设计原理.主要配置及集群搭建(转) 问题导读: 1.zookeeper在kafka的作用是什么? 2. ...
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建--转载
问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...
- Java程序员需要掌握的计算机底层知识(三):进程、线程、纤程、中断
面试高频问题 问:进程和线程有什么区别? 答:进程是一个程序运行起来的状态(运行态),线程是一个进程中不同的执行路径(线程只是其中一个). 更为专业的回答:进程是操作系统用来分配资源的基本单位,线程是 ...
- Scala go java_Java、Scala和Go语言多线程并发对比测试结果和结论
AMD 双核 2.8G ,4G内存 winxp java+concjava+AKKA1.3java+AKKA2.0Scala+AKKA1.3Scala+AKKA2.0Go+goroutine 1-N ...
最新文章
- 一键安装python3环境
- 论电子计算机在审计中的应用,计算机技术在审计中的应用领域分析.doc
- Angular 依赖注入 useClass 的实例创建位置
- 中国移动云能力中心 Iaas 产品部软件开发工程师陈焱山:社区始于连接,也成就于连接...
- [ASP.NET AJAX]类似.NET框架的JavaScript扩展
- C语言学习笔记(2)
- Python风格总结:十进制转二进制、八进制、十六进制
- 微信小程序遇到的程序异步执行导致数据库读写异常的问题
- python%20是什么运算
- 新年计算机等级的决定的英语,新年决定英语对话及译文
- [Spring Boot 系列] 集成maven和Spring boot的profile功能
- android fastboot模式下载以及出现的问题
- 微信购物商城网站定制需要多少钱?电商网站建设开发方案(一)
- Chrome将网页背景变成黑色(真正的夜间模式、深色模式)
- CSDN博客成长记录
- SwiftUI实战教程 第三章 土豆List
- 去谷歌面试,竟让扔鸡蛋?
- hadoop 文本统计一个字符的个数_hadoop统计单词个数 - 卡饭网
- 业务中台、技术中台、数据中台、AI中台
- vscode中选中多行多光标进行操作及一些常用的命令(快捷键)
热门文章
- Eclipse基础设置
- laravel php resources,利用 Laravel Resources 来整合第三方 API 数据
- android网络通信之SOAP教程实例汇总
- pcm 8k单声道和双声道采样_音频接口PCM
- 10通信端口感叹号_工程现场通信总线布线、压接规范
- tebluea 仪表板如何联动_报告厅音响设备和辅助设备.doc
- 使用linux_Linux中VIM使用技巧
- python计算器基础知识_Python基础(一):将Python当做计算器、编程的第一步
- clojure java.jdbc_Clojure驱动的Web开发
- java swing 禁用鼠标事件_Java学习笔记:swing中树控件,设置树节点的图标,按钮美化,鼠标事件,禁止鼠标双击...