大数据——Scala柯里化、样例类和模式匹配及示例演示_第1页
大数据——Scala柯里化、样例类和模式匹配及示例演示_第2页
大数据——Scala柯里化、样例类和模式匹配及示例演示_第3页
大数据——Scala柯里化、样例类和模式匹配及示例演示_第4页
大数据——Scala柯里化、样例类和模式匹配及示例演示_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大数据一一Scala柯里化、样例类和模式匹配及示例演示Scala柯里化和模式匹配及示例演示柯里化(urrying)方法可以定义多个参数列表,当使用较少的参数列表调用多参数列表的方法时,会产生一个新的参数,该函数接收剩余的参数列表作为其参数。这被称为柯里化单参数列表defmodN(n:Int,x:Int)=(x%n)=0)多参数列表defmodN(n:Int)(x:Int)=(x%n)=0)新函数接收剩余的参数列表作为其参数deffl(x:Int)=modN(10)(x)deff2(n:Int)=modN(n)(10)deff3=modN(10)(_)示例objecttestdefmain(ar

2、gs:ArrayString):Unit=deffun1(a:Int,b:Int,c:Int,d:Int):Int=a+b+c+ddeffun2(a:Int,b:Int,c:Int)(d:Int):Int=a+b+c+ddeffun3(a:Int,b:Int)(c:Int,d:Int):Int=a+b+c+ddeffun4(a:Int)(b:Int,c:Int,d:Int):Int=a+b+c+ddeffun5(a:Int)(b:Int)(c:Int)(d:Int):Int=a+b+c+dprintln(fun1(1,2,3,4)println(fun2(1,2,3)(4)println(fu

3、n3(1,2)(3,4)println(fun4(1)(2,3,4)_结果展示:样例类(caseclass)样例化常用于描述不可变的值对象(ValueObject)关键字caseclassStudent(name:String,age:Int)定义样例类valstu=Student(Jason,19)创建样例类的实例,无需eprintln()访问对象属性样例类构造参数默认声明为val,自动实现类构造参数的getter样例类构造参数声明为var时,自动实现类构造参数的setter和getter样例类自动创建伴生对象样例类自动实现的其他方法toString()、equals()、c

4、opy()、hashCode()伴生对象中的apply()、unapply()unapply()接受一个对象,从对象中提取出相应的值,主要用于模式匹配中模式匹配atch表达式模式匹配类似于Javaswitch语句能处理类型所有类型0不需要break。能够生成值valfirstArg=if(args.1ength0)args(0)elsefirstArgmatchcasesalt=println(pepper)casechips=println(salsa)caseeggs=println(bacon)case_=println(huh?)/以上未列出的值,使用_”示示例基本模式匹配object

5、testdefmain(args:ArrayString):Unit=deftestMatch(a:Int):String=amatchcase1=onecase2=twocase_=manyprintln(testMatch(1)println(testMatch(2)结果展示:objecttestdefmain(args:ArrayString):Unit=defstudentScore(score:String):Unit=scorematchcaseA=println(超级棒)caseB=println(彳艮不错)caseC=println(还行)case_=println(需要加油)

6、studentScore(A)studentScore(B)studentScore(c)studentScore(D)纟吉果展加:模式守卫(在模式后面加上条件)objecttestdefmain(args:ArrayString):Unit=defstudentScore(name:String,score:String):Unit=scorematchcaseA=println(超级棒)caseB=println(彳艮不错)caseC=println(还行)case_ifname=老王=println(你是最棒的)case_=println(加油)studentScore(老王”,D)纟吉

7、果展加:仅匹配类型objecttestdefmain(args:ArrayString):Unit=deftestMatch(a:Any):Unit=amatchcase1=println(输入的值为1)casei:Int=println(s输入的类型为Int,值为$i)casej:String=println(s输入的类型为String,值为$j)testMatch(1)testMatch(2)testMatch(2)纟吉果展加:importjava.io.FileNotFoundExceptionobjecttestdefmain(args:ArrayString):Unit=defexc

8、eption(e:Exception):Unit=ematchcasee1:川egalArgumentException=println(川egalArgumentException)casee2:FileNotFoundException=println(FileNotFoundException)casee3:IndexOutOfBoundsException=println(IndexOutOfBoundsException)case_:Exception=println(Exception)exception(newIllegalArgumentException)exception(

9、newFileNotFoundExceptior)exception(newIndexOutOfBoundsException)exception(newException)纟吉果展加:模式匹配中使用变量赋值objecttestdefmain(args:ArrayString):Unit=defstudentScore(name:String,score:String):Unit=scorematchcaseA=println(verygoodstudent)caseB=println(goodstudent)caseC=println(soso)case_ifname=老王=println(

10、name+goodboy)case_score=println(youmuststudy,yourscoreis+_score)studentScore(张三,E)纟吉果展加:对Array和is的元素进行模式匹配objecttestdefmain(args:ArrayString):Unit=defarray(arr:ArrayString):Unit=arrmatchcaseArray(kb09)=println(hello,kb09)caseArray(boy1,boy2,boy3)=println(shello$boy1&$boy2&$boy3)caseArray(kb09,_*)=pr

11、intln(hi,kb09!)case_=println(whoareyou)array(Array(kb09)array(Array(kbO9,kbO8,kbO7)array(Array(kbO9,kbO8,kbO7,kbO6)array(Array(kbO8,kbO9)纟吉果展加:Option与模式匹配objec二esi亠defmain(argsArrayringUniin亠va一gradesnMap(=Leo=,v=A=Jack=,v=B-I-Jen=,v=c=)defgeiGrade(namecniring)c:nii殳va-gradeugrades.gesame)grademaoh亠

12、casesome(gradeTvprini-n(=yourgradeis=+grade)caseNoneuvprinHn(=sorry一yourgradeinformationisno二n-hesysiem-)ge_Grade(=Leo=)ge_Grade(=Jack=)ge_Grade(=Jen=)ge_Grade(=zhang=)EnH-)lfflzn-璋宜淋B艸曲碍objec二esi亠defmain(argsArrayringUniin亠casec-assTeacher(namesrinFage二ni)defiesiMaohaeacher!Teacherxuninroachermaoh亠

13、caseTeacher(=H=一18)nVprini-n(=he-0一赧出一-)caseTeacher(-28)nVprini-n(=he-0一赧亲=)caseTeacher(name一agenvprini-n(s=he=o-sname-)iesiMaoh(Teacher(=H=一18)iesiMaoh(Teacher(-28)iesiMaoh(Teacher(=38)EnH-)lfflzn-objec二esi亠defmain(argsArrayringUniin亠c-assPersoncasec-assTeacher(namesrinFsubjecrrsiring)expendsPersoncasec-assscdensamecniringo-assroom二ni)expendsPersoncasec-assworker(namesrinFworkcz)iring)expendsPersoncasec-asss-rangeroexpendsPersondefa(person)c:ninpmaoh亠caseTeacher(name一subjecTvprini-n(s=he-osnampwe-comeioschooLyou-eachssubjecr)casescdeni(nameo-assroomllvprini-n(s=he-psnampwe-comeioschooyo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论