Scala语言基础-服务计算技术与系统教育部重点实验室.ppt

Scala语言基础-服务计算技术与系统教育部重点实验室.ppt

  1. 1、本文档共143页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Scala语言基础-服务计算技术与系统教育部重点实验室

占位符语法 为了让函数字面量更加简洁,我们可以使用下划线作为一个或多个参数的占位符,只要每个参数在函数字面量内仅出现一次。 从上面运行结果可以看出,下面两个函数字面量是等价的。 占位符语法 有时你把下划线当作参数的占位符时,编译器有可能没有足够的信息推断缺失的参数类型。例如,假设你只是写_ + _:? 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 数据库实验室网站: 主讲教师:林子雨 林子

您可能关注的文档

文档评论(0)

170****0571 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档