第4课Scala模式匹配类型系统彻底精通与Spark源码阅读

第4课Scala模式匹配类型系统彻底精通与Spark源码阅读

ID:47256969

大小:82.00 KB

页数:5页

时间:2019-08-31

第4课Scala模式匹配类型系统彻底精通与Spark源码阅读_第1页
第4课Scala模式匹配类型系统彻底精通与Spark源码阅读_第2页
第4课Scala模式匹配类型系统彻底精通与Spark源码阅读_第3页
第4课Scala模式匹配类型系统彻底精通与Spark源码阅读_第4页
第4课Scala模式匹配类型系统彻底精通与Spark源码阅读_第5页
资源描述:

《第4课Scala模式匹配类型系统彻底精通与Spark源码阅读》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、(文档来源:SparkIMF)获取更多大数据Spark相关资料,请关注公众微信号:DT^SparkScala模式匹配、类型系统彻底精通与Spark源码阅读一:守卫varch=chmatch{case*+*=>sign=1case,J=>sign=case_ifCharacter.isDigit(ch)=>digit=Character.digit(chz10)case_=>sign=0}二:模式中的变虽如果在case关键字后报着一个变疑名,那么匹配的表达式会被赋值给那个变疑。case一是这个特性的一个特殊悄况,变量名是一。"Hello,world"

2、foreach{c=>printin(cmatch{case'1=>"space"casech=>nChar:H+c})}三:类型模式相比使用islnstanceof來判断类型,便用模式匹配更好objmatch{casex:Int=>xcases:String=>Integer.parselnt(s)caseBiglnt=>Int.MaxValuecase_=>0}捕获异常:valfile=newFile(fileName)try{Source.fromFile(file).getLines()}catch{caseel:FileNotFoundE

3、xception=>println(,,FileNotFoundException,')casee2:RuntimeException二〉println(HRuntimeException”)casee3:Exception=>println(”Exception“)}因为兀配是发生在运行期的,而且JVM中泛熨的类熨信息会彼擦掉,因此不能使用类熨來匹配特定的Map类盘四:匹配数组.列表和元组1)数纽valarr=Array(0z3,4,5,67)arrmatch{caseArray(O)=>M0ucaseArray(x,y)=>x+HM+ycase

4、Array(O,x=>println(x)case_=>''somethingelse'12)列表valarr=List(0,4,5,6,7jarrmatch{caseList(O)=>M0ncaseList(x#y)=>x+11"+ycaseList(Ozx@J*)=>println(x)case_=>“somethingelse11}或考arrmatch{case0::Nil=>©casex::y::Nil=>x+,"1+ycase0::tail=>"0..."case_=>"somethingelse11}五:提取器模式匹配來对数组、列表和元

5、组进行了匹配,在这个过程的背后的是提取器(extractor)机制。使用unapply來提取固定数量的对彖,使用unapplySeq來提取一个序列。在前而的代码caseArray(O,x)Array©x)部分实际上是使用了伴生对彖中的提取器,实际调用形式是:Array.unapplySeq(arr)<>根据Doc,提取器方法接受一个Array参数,返回一个0ption。1〉正则表达式是另一个适用捉取器的场虽。正则冇分组时,可以用捉取器来匹配分组valpattern=M([0-9]+)([a-z]+)".r"99bottles"match{casep

6、attern(num,item)=>(num,item)}2)H定义捉取器;下面的例子显示电子邮件地址的提取器对彖:objectTest{defmain(args:Array(StringJ){printin("Applymethod:M+apply("Zara蔦"gmail.com,,));printin("Unapplymethod:H+unapply(,,Zara@gmail.comu));println(HUnapplymethod:M+unapply(MZaraAli”));}//Theinjectionmethod(optional)d

7、efapply(user:String,domain:String)={user+H@H+domain}//Theextractionmethod(mandatory)defunapplyfstr:String):Option[(String,String)]={valparts=strsplitl'@tlif(parts.length==2){Some(parts(0),parts(l))}else{None}}}六:变疑声明中的模式val(x,y)=(1,2)val(q,r)=Biglnt(lO)/%3//返回商和余数的对偶valArray(f

8、irst,second,_*)=arr//将第一・和第二个分别给first和second七:for表达式中的模式impor

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。