




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Scala编程基础语法if条件表达式while循环for循环if条件表达式执行if语句时,会首先检查if条件是否为真,如果为真,就执行对应的语句块,如果为假,就执行下一个条件分支。Scala中的if表达式的值可以赋值给变量valx=3if(x>0){println("Thisisapositivenumber")}else{println("Thisisanegativenumber")}valx=6vala=if(x>0)1else-1while循环和do-while循环Scala中也有和Java类似的while循环语句do-while语句vari=9while(i>0){i-=1printf("iis%d\n",i)}vari=0do{i+=1println(i)}while(i<5)for循环——方式1
for(变量<-表达式)语句块for(i<-1to5)println(i)12345for(i<-1to5by2)println(i)135for循环——方式2
for(变量<-表达式
if条件表达式)语句块for(i<-1to5ifi%2==0)println(i)24for循环——方式3
for(变量<-表达式;变量<-表达式)语句块for(i<-1to5;j<-1to3)println(i*j)123246.................for(i<-1to5ifi%2==0;j<-1to3ifj!=i)println(i*j)264812for循环——方式4
for(变量<-表达式)yield语句块for(i<-1to5ifi%2==0)yieldiscala.collection.immutable.IndexedSeq[Int]=Vector(2,4)小案例1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81尽量精简的代码实现乘法口诀表:小案例for(row<-1to9;col<-1torow){valprod=(row*col).toString()print(col+“*”+row+“=”+prod+“”)if(row==col)println()}数据结构数组(Array)元组(Tuple)容器(Collection)集合(Set)映射(Map)数组(Array)Scala提供了参数化类型的通用数组类Array[T],其中T可以是任意的Scala类型valintValueArr=newArray[Int](3)//声明一个长度为3的整型数组,每个数组元素初始化为0intValueArr(0)=12//给第1个数组元素赋值为12intValueArr(1)=45//给第2个数组元素赋值为45intValueArr(2)=33//给第3个数组元素赋值为33数组(Array)Scala提供了参数化类型的通用数组类Array[T],其中T可以是任意的Scala类型valmyStrArr=newArray[String](3)//声明一个长度为3的字符串数组,每个数组元素初始化为nullmyStrArr(0)="BigData"myStrArr(1)="Hadoop"myStrArr(2)="Spark"for(i<-0to2)println(myStrArr(i))元组(Tuple)元组是对多个不同类型对象的一种简单封装。使用下划线“_”加上从1开始的索引值,来访问元组的元素如果需要在方法里返回多个不同类型的对象,Scala可以通过返回一个元组实现。容器(Collection)定义了抽象方法foreach()定义了抽象方法Next(),等定义了不同的索引方式容器(Collection):序列---列表(List)列表:一种共享相同类型的不可变的对象序列。List一旦被定义,其值就不能改变,因此声明List时必须初始化;varstrList=List("BigData","Hadoop","Spark")strList.head:将返回字符串”BigData”,strList.tail:返回List("Hadoop","Spark")valotherList="Apache"::strList返回新列表:List("Apache","BigData","Hadoop","Spark")容器(Collection):集合(set)集合(set):不重复元素的容器(collection)。以“哈希”方法对元素的值进行组织,可以快速地找到某个元素scala>varmySet=Set("Hadoop","Spark")mySet:scala.collection.immutable.Set[String]=
Set(Hadoop,Spark)scala>mySet+="Scala"//向mySet中增加新的元素scala>println(mySet.contains("Scala"))true容器(Collection):集合(set)集合(set):不重复元素的容器(collection)。以“哈希”方法对元素的值进行组织,可以快速地找到某个元素scala>importscala.collection.mutable.Setscala>valmyMutableSet=Set("Database","BigData")myMutableSet:scala.collection.mutable.Set[String]=Set(BigData,Database)scala>myMutableSet+="CloudComputing"scala>println(myMutableSet)虽然可变集和不可变集都有添加或删除元素的操作,但是,二者有很大的区别。对不可变集进行操作,会产生一个新的集,原来的集并不会发生变化。而对可变集进行操作,改变的是该集本身容器(Collection):映射(map)映射(Map):一系列键值对的容器。键是唯一的,但值不一定是唯一的。可以根据键来对值进行快速的检索valuniversity=Map(“NEU"->“NeusSoftUniversity",“QH"->“QinghuaUniversity)println(university(“NEU"))valneu=if(university.contains("NEU"))university("NEU")else0println(neu)定义的是不可变映射,无法更新映射中的元素的,也无法增加新的元素容器(Collection):映射(map)可变的映射importscala.collection.mutable.Mapvaluniversity_new=Map(“NEU"->“NeuSoftUniversity",“QH"->“QinghuaUniversity)university_new(“NEU")=“NeusoftInformationUniversity“//更新已有元素的值university_new(“HS")=“HaishiUniversity"//添加新元素容器(Collection):映射(map)循环遍历映射,是经常需要用到的操作,基本格式是:for((k,v)<-映射)语句块for((k,v)<-university_new)printf("Codeis:%sandnameis:%s\n",k,v)Codeis:NEUandnameis:NeusoftInformationUniversityCodeis:QHandnameis:QinghuaUniversityCodeis:HSandnameis:HaishiUniversity课后作业利用Map保存网址和对应的流量1)输出所有信息2)指定某个网址,输出流量示例如下:12:9009 568 1909810182610086.11842101 1603102容器的操作遍历操作映射操作过滤操作规约操作小序曲——什么是高阶函数高阶函数:当一个函数包含其它函数作为其参数或者返回结果为一个函数时,该函数被称为高阶函数。例:假设需要分别计算从一个整数到另一个整数的“连加和”以及“平方和”小序曲——什么是高阶函数高阶函数:当一个函数包含其它函数作为其参数或者返回结果为一个函数时,该函数被称为高阶函数。例:假设需要分别计算从一个整数到另一个整数的“连加和”以及“平方和”小序曲——什么是高阶函数原始方案:不采用高阶函数defsum(Inta,Intb):Int{if(a>b)0elsea+sum(a+1,b)}defsumSquares(Inta,Intb):Int{if(a>b)0elsea*a+sum(a+1,b)}小序曲——什么是高阶函数新方案:采用高阶函数defsum(f:Int=>Int,Inta,Intb):Int{
if(a>b)0elsef(a)+sum(f,a+1,b)}scala>sum(x=>x,1,10)scala>sum(x=>x*x,1,10)容器的操作-遍历操作vallist=List(1,2,3,4,5)list.foreach(elem=>println(elem))defforeach[U](f:Elem=>U):Unitvaluniversity=Map(“NEU"->“NeuSoftUniversity",“QH"->“QinghuaUniversity)university.foreach(elem=>println(kv._1+”:”+kv._2))容器的操作-映射操作valwords=List(“Hello”,“Spark”)words.map(s=>(s,1))res4:List[(String,Int)]=((Hello,1),(Spark,1))映射是指通过对容器中的元素进行某些运算来生成一个新的容器。map方法:一对一映射words.map(s=>s.toUpperCase)res5:List[(String,Int)]=(HELLO,SPARK)容器的操作-映射操作valwords=List(“Hello”,“Spark”)words.flatmap(s=>s.toList)res4:List[(char)]=List(H,e,l,l,o,S,p,a,r,k)映射是指通过对容器中的元素进行某些运算来生成一个新的容器。flatmap方法:一对多映射容器的操作-过滤操作valuniversity=Map(“NEU"->“NeuSoftUniversity",“QH"->“QinghuaUniversity)valneu=university.filter(kv=>kv._2.contains(“NEU“))res4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 油气田开发项目全过程咨询、管理与技术服务考核试卷
- 2025年版关于办公室装修合同范本下载
- 2025设备租赁合同空白合同
- 2025电缆线路维修合同
- 2025年合作协议制作与发布合同
- 2025《中文劳动合同范本》
- 隧道、洞室工程暗挖专项施工方案编制
- 二零二五门面租房合同书模板
- 二零二五劳动合同法服务期期限是多长时间
- 二零二五聘用教师合同范例
- 剪辑考试试题及答案
- 2025陕西建筑安全员C证(专职安全员)考试题库
- 消毒供应中心规范培训
- 2025重庆华地资环科技有限公司校园招聘9人笔试参考题库附带答案详解
- 易制毒化学品销售人员岗位职责
- 小区二次供水水箱清洗消毒的监督流程课件
- 自主智能系统知到课后答案智慧树章节测试答案2025年春哈尔滨工程大学
- GB/T 6433-2025饲料中粗脂肪的测定
- 2019版 浙科版 高中生物学 必修2 遗传与进化《第二章 染色体与遗传》大单元整体教学设计2020课标
- 【MOOC期末】《介入放射学》(东南大学)中国大学慕课答案
- DB50T 771-2017 地下管线探测技术规范
评论
0/150
提交评论