- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Scala语言的函数 Scala中的函数 Scala与Java等面向对象语言的一个重大区别就是引入了函数式编程 在Scala中函数是“头等公民”,可以像任何其他类型一样被传递和操作 也就是说:函数的使用方式和其他数据类型的使用方式完全一致 函数可以有自己的类型,也可以有实例 我们可以将一个函数实例赋值给一个变量 在函数的参数传递过程中我也可以传递一个函数,进而产生高阶函数的概念。 Scala语言的函数 Scala中的函数定义与函数类型 ? //定义一个函数 def sum(val num:Int):Int={ num+=1 } ? 与在类中定义方法的方式相同 ? //sum函数的类型 (Int)= Int ? 函数的类型 函数类型可以理解为不同类型的集合之间的映射关系 具体的函数则是这种集合之间映射关系中的一种实现!! Scala语言的函数 Scala中的匿名函数:lambda表达式 ? //sum函数的另一种表达方式 (num: Int)= {num+=1} //或者去掉后边的大括号 (num: Int)= num+=1 ? lambda表达式的结构 //参数为一个,括号可省去,表达式只有一个,花括号也可以省去 (参数) = {表达式} 参数也就是函数所要接收的参数 表达式就是函数体中的内容 实际中参数和表达式均可以有多个 Scala语言的函数 通过lambda表达式定义一个函数变量 ? //通过Lambda表达方式定义一个函数变量 val func: Int=Int =(num: Int)= num+=1 //上述表达式也等价于 val func: Int=Int = (num)= num+=1 ? 函数变量就是由Lambda表达式所描述的函数的名字 Scala语言的函数 Scala中的高阶函数 既然函数也可以像其他类型的变量一样可以赋值给具体的参数,那么函数就可以作为参数传递给另外一个函数,并且也可以作为返回值由另外一个函数返回 这就产生了高阶函数 ? //定义compute函数 def compute(val func:( Int, Int) = Int, val a:Int, val b:Int):Int={ if(ab){ func(a,b)+a } else{ func(a,b)+b } } //高阶函数的使用 compute((a,b)=a*b, 5, 3)//将Lambda表达式描述的函数传递给compute函数 compute((a,b)=a+b, 3, 8) ? Scala语言的函数 Scala函数中的占位符 在阅读Scala代码时,会时常在Lambda表达式中看到下划线“_” Scala为了让函数更加精简,使用下划线“_”来作为占位符,表示一个参数 ? //高阶函数的语句 compute((a,b)=a+b, 3, 8) //上述语句可以精简为如下 compute(_+_, 3, 8)//每个下划线代表一个参数 ? 我们应用占位符可以将一个变量从一个Lambda表达式的左右两边完全隐去,并使得Lambda表达式变得非常简洁 但是,这种语法也极容易造成误解。所以,我们在实际中可以尽量少用占位符 Scala语言的数组 包括定长数组和变长数组 定长数组是在定义时必须指定数组的长度 变长数组即类似于Java中的ArrayList ? //定义和使用定长数组 val intArray = new Array[Int](3) //长度为3的数组,每个数组元素初始化为0 //给每个数组元素赋值,注意是括号而不是方括号 intArray (0) = 10 intArray (1) = 11 intArray (2) = 12 //或者以这种方式定义一个数组 val intArray2= Array(0,1,2) ? 定长数组 变长数组 Scala语言的列表 Scala列表 列表维护了一个队列,可以添加数据,也可以出队列来获取数据 Scala列表类似于数组,它们之中的所有元素的类型应相同 也可以通过::和:::符号来对列表进行添加数据以及连接两个列表 获取列表尾部的操作返回的也是一个列表 Scala语言的集合 Scala集合 集合Set是不重复元素的集合 Scala语言的元组 Scala元组 元组与数组、列表、集合不同,它是不同类型元素的聚集 ? //定义一个元组 val tuple = (zhangsan, 32, 2013) //获取元组各个维度的数据 tuple._1//第一个维度的数据,zhangsan tuple._2//第二个维度的数据,32 tuple._3//第三个维度的数据,2013 ? Scala语言的映射 Scala映射 映射Map是键值对的集合 我
您可能关注的文档
- 《大数据基本处理框架原理与实践》PPT课件(共16次课)第六次课:Hbase基本原理介绍.ppt
- 《大数据基本处理框架原理与实践》PPT课件(共16次课)第七次课:Hbase的实践操作.ppt
- 《大数据基本处理框架原理与实践》PPT课件(共16次课)第三次课:MapReduce概述.ppt
- 《大数据基本处理框架原理与实践》PPT课件(共16次课)第十次课:Spark的进一步实践.ppt
- 《大数据基本处理框架原理与实践》PPT课件(共16次课)第十二次课:Spark的进一步实践3.ppt
- 《大数据基本处理框架原理与实践》PPT课件(共16次课)第十六次课:Spark的进一步实践3 - 带代码.ppt
- 《大数据基本处理框架原理与实践》PPT课件(共16次课)第十三次课:Spark streaming的基本原理.ppt
- 《大数据基本处理框架原理与实践》PPT课件(共16次课)第十四次课:Spark streaming的实践操作.ppt
- 《大数据基本处理框架原理与实践》PPT课件(共16次课)第十五次课:课程复习与总结.ppt
- 《大数据基本处理框架原理与实践》PPT课件(共16次课)第十一次课:Spark的进一步实践2.ppt
最近下载
- 汽修公司汽车修理汽车保养突发环境应急预案.docx VIP
- 某水库除险加固工程施工组织设计.doc VIP
- 全国预防接种技能竞赛理论训练题库及答案(中华人民共和国疫苗管理法212题).docx VIP
- 2025年(完整)人教精通版小学英语3-6年级单词词汇表 .pdf VIP
- 天翼云认证解决方案架构师考试题及答案(新版).doc VIP
- 港迪HF659系列变频器使用说明书V100(G20200812).pdf VIP
- 水库除险加固工程施工组织设计120页.doc VIP
- 《农业政策热点培训》课件.ppt VIP
- 申凌门机NSFC01-01A控制器操作手册.pdf
- 从大食物观角度出发的中国饲料粮供给安全问题探讨.docx VIP
文档评论(0)