- 1、本文档共143页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大数据技术原理与应用-集群与网格计算实验室
占位符语法 为了让函数字面量更加简洁,我们可以使用下划线作为一个或多个参数的占位符,只要每个参数在函数字面量内仅出现一次。 从上面运行结果可以看出,下面两个函数字面量是等价的。 占位符语法 有时你把下划线当作参数的占位符时,编译器有可能没有足够的信息推断缺失的参数类型。例如,假设你只是写_ + _:? scala val f = _ + _ console:4: error: missing parameter type for expanded function ((x$1, x$2) = x$1.$plus(x$2)) val f = _ + _ 这种情况下,你可以运用 冒号指定类型,如下:? scala val f = (_: Int) + (_: Int) f: (Int, Int) = Int = function scala f(5, 10) res11: Int = 15 请留心 _ + _将扩展成带两个参数的函数字面量。这也是仅当每个参数在函数字面量中最多出现一次的情况下你才能运用 这种短格式的原由 。多个下划线指代多个参数,而不是单个参数的重复运用 。第一个下划线代表第一个参数,第二个下划线代表第二个,第三个……,如此类推。 8.4.2 针对集合的操作 遍历操作 map操作和flatMap操作 filter操作 reduce操作 fold操作 遍历操作 列表的遍历 可以使用for循环进行遍历: 也可以使用foreach进行遍历: 遍历操作 映射的遍历 循环遍历映射,是经常需要用到的操作,基本格式是: 执行结果: 创建一个映射 循环遍历映射 遍历操作 映射的遍历 也可以使用foreach来实现对映射的遍历 也可以尝试使用下面形式来遍历 map操作和flatMap操作 map操作是针对集合的典型变换操作,它将某个函数应用到集合中的每个元素,并产生一个结果集合。 map操作 map操作和flatMap操作 flatMap操作 flatMap是map的一种扩展。在flatMap中,我们会传入一个函数,该函数对每个输入都会返回一个集合(而不是一个元素),然后,flatMap把生成的多个集合“拍扁”成为一个集合。 上面的flatMap执行时,会把books中的每个元素都调用toList,生成List[Char],最终,多个Char的集合被“拍扁”成一个集合。 filter操作 遍历一个集合并从中获取满足指定条件的元素组成一个新的集合。Scala中可以通过filter操作来实现。 首先创建一个映射: val university = Map(XMU - Xiamen University, THU - Tsinghua University,PKU-Peking University,XMUT-Xiamen University of Technology) 采用filter操作过滤得到那些学校名称中包含“Xiamen”的元素 val universityOfXiamen = university filter {kv = kv._2 contains Xiamen} 采用filter操作过滤得到那些学校名称中以字母“P”开头的元素: val universityOfP = university filter {kv = kv._2 startsWith P} reduce操作 使用reduce这种二元操作对集合中的元素进行归约 reduce包含reduceLeft和reduceRight两种操作,前者从集合的头部开始操作,后者从集合的尾部开始操作。 reduceLeft(_ + _)整个加法操作的执行顺序如下: reduceRight(_ + _)表示从列表尾部开始,对两两元素进行求和操作,顺序如下: 直接使用reduce,而不用reduceLeft和reduceRight,这时,默认采用的是reduceLeft fold操作 折叠(fold)操作和reduce(归约)操作比较类似。fold操作需要从一个初始的“种子”值开始,并以该值作为上下文,处理集合中的每个元素。 fold有两个变体:foldLeft()和foldRight(),其中,foldLeft(),第一个参数为累计值,集合遍历的方向是从左到右。foldRight(),第二个参数为累计值,集合遍历的方向是从右到左。对于fold()自身而言,遍历的顺序是未定义的,不过,一般都是从左到右遍历。 8.4.3 函数式编程实例WordCount 附录:主讲教师林子雨简介 单位:厦门大学计算机科学系 E-mail: ziyulin@ 个人网页:/linziyu 数据库实验室网站: 主讲教师:林子雨 林子
您可能关注的文档
- 分析项目检测流程.ppt
- 初审推荐对象汇总表.doc
- 创新简报2012年第2期我校学子在第五届'高教杯'全国大学生先进成图.doc
- 分布式认知理论-许国雄·个人网站.doc
- 判断早期的细菌污染并不容易。.ppt
- 创造技法-北京科技大学.ppt
- 利用EXCEL进行一元回归分析-大学数学网.doc
- 利用TCP标记分析故障-科来.doc
- 初识CAD的工作界面-湖北水利水电职业技术学院.doc
- 制作张浩军-项目首页.ppt
- 《GB/T 4127.14-2025固结磨具 尺寸 第14部分:角向砂轮机用去毛刺、荒磨和粗磨砂轮》.pdf
- 中国国家标准 GB/T 4127.14-2025固结磨具 尺寸 第14部分:角向砂轮机用去毛刺、荒磨和粗磨砂轮.pdf
- GB/T 4127.14-2025固结磨具 尺寸 第14部分:角向砂轮机用去毛刺、荒磨和粗磨砂轮.pdf
- 中国国家标准 GB/T 3481.1-2025齿轮 轮齿的磨损和损伤 第1部分:术语和特性.pdf
- GB/T 3481.1-2025齿轮 轮齿的磨损和损伤 第1部分:术语和特性.pdf
- GB/T 45771-2025精细陶瓷 干湿环境下陶瓷薄膜的摩擦磨损特性评价方法.pdf
- 中国国家标准 GB/T 45771-2025精细陶瓷 干湿环境下陶瓷薄膜的摩擦磨损特性评价方法.pdf
- 《GB/T 45771-2025精细陶瓷 干湿环境下陶瓷薄膜的摩擦磨损特性评价方法》.pdf
- GB/T 18266.2-2025体育场所等级的划分 第2部分:健身房.pdf
- 《GB/T 18266.2-2025体育场所等级的划分 第2部分:健身房》.pdf
最近下载
- “红旗杯”竞赛总题库-4班组长计划管理能力考试题库(附答案).docx VIP
- 物业管理实务练习题物业的承接查验(三).pdf VIP
- 食品配送行业货物运输质量保障措施.docx VIP
- 2025入党积极分子发展对象培训考试试卷题库(含答案).docx VIP
- 地下室金刚砂地坪施工方案.docx VIP
- 2025年公安局警务辅助人员招聘考试笔试试题(附答案).docx VIP
- “红旗杯”竞赛总题库-2班组长成本绩效管理能力考试题库(附答案).docx VIP
- 轨道交通收益权质押价值评估研究--以xx市地铁x号线为例.pdf VIP
- 5. 国威人工智能产业学院建设方案V1.5.pdf VIP
- 中国AIGC应用全景图谱报告.pptx VIP
文档评论(0)