day-scala基礎(chǔ)編程隨堂課件_第1頁(yè)
day-scala基礎(chǔ)編程隨堂課件_第2頁(yè)
day-scala基礎(chǔ)編程隨堂課件_第3頁(yè)
day-scala基礎(chǔ)編程隨堂課件_第4頁(yè)
day-scala基礎(chǔ)編程隨堂課件_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHTWhatisScala

EDUCATIONTOCREATEABRIGHT 網(wǎng)中文社WhatisScala

EDUCATIONTOCREATEABRIGHT基于JVM的FP

EDUCATIONTOCREATEABRIGHTScala lijIDEA:http:/ IDE配置

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHTvalorvarVariableName:DataType[=InitialValueorExpressionor

EDUCATIONTOCREATEABRIGHT并無(wú)基本類型與包裝類型之

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT break語(yǔ)句,終止循環(huán)語(yǔ)句并將執(zhí)行立刻循環(huán)的下面語(yǔ)

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHTFor

EDUCATIONTOCREATEABRIGHTScala

EDUCATIONTOCREATEABRIGHT備了Java所不具備的更強(qiáng)大的功能和特性

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT defsay o(name:String){println(" o,"+name)}valsay oFunc=say o_ EDUCATIONTOCREATEABRIGHTScala中,函數(shù)也可以不 名,此時(shí)函數(shù)被稱 函可以直接定義函數(shù)之后,將函數(shù)賦值給某個(gè)變量;也可將直接定義 函數(shù)傳入其他函數(shù)之 則就是,(參數(shù)名:參數(shù)類型)=>函數(shù)val oFunc=(name:String)=> o,"+

EDUCATIONTOCREATEABRIGHT接收其他函數(shù)作為參數(shù)的函數(shù),被稱作高階函數(shù)(higher-ordervalsay oFunc=(name:String)=>println(" o,"+name)defgreeting(func:(String)=>Unit,name:String){func(name)} oFunc,"leo")Array(1,Array(1,2,3,4,5).map((num:Int)=>num*高階函數(shù)的另外一個(gè)功能是將函數(shù)作為返回defdefgetGreetingFunc(msg:String)=(name:String)=>println(msg+","+valgreetingFuncvalgreetingFunc=

EDUCATIONTOCREATEABRIGHT諸如3*_的這種語(yǔ)法,必須掌握?。park源碼中大量使用了這種語(yǔ)defdefgreeting(func:(String)=>Unit,name:String){func(name)o,"+name),o,"+name), o,"+name), defdeftriple(func:(Int)=>Int)={func(3)}triple(3*_)

EDUCATIONTOCREATEABRIGHTArray(1,2,3,4,5).map(2*Array(1,2,3,4,5).map(2*::(1to20).filter(_%2==下面這個(gè)操作就相當(dāng)于1*2*3*4*5*6*7*8*9(1to9).reduceLeft(_*_)

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHTScala中提供了一種數(shù)據(jù)結(jié)構(gòu)-數(shù)組,其中相同類型的元素的固定大小的連續(xù)集合。數(shù)組用于數(shù)據(jù)的集合,但它往往是更加有用認(rèn)為數(shù)組作為相同類型的變量的集合。Scala中數(shù)組類型:定長(zhǎng)數(shù)組、變長(zhǎng)數(shù)組

EDUCATIONTOCREATEABRIGHT EDUCATIONTOCREATEABRIGHT數(shù)組中常見(jiàn)的方法,需導(dǎo)入包 EDUCATIONTOCREATEABRIGHTScala有一個(gè)非常通用,豐富,強(qiáng)大,可組合的集合庫(kù);集合是高階的(highlevel)并 EDUCATIONTOCREATEABRIGHTScala 可變的集合類位于a

包中,而不可變的集合位于a

包中的集合,既可以是可變的,也可以是不可變 EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHTList中常見(jiàn)方法Set說(shuō)無(wú)序不重

EDUCATIONTOCREATEABRIGHT+/++/-/--都會(huì)創(chuàng)造一個(gè)新的 +=/++=/-=/--=不會(huì)創(chuàng)造一個(gè)新的

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHTmain

EDUCATIONTOCREATEABRIGHT scala中的main方法定義為defmain(args:Array[String]),而且必須定義在object如果要運(yùn)行上述代碼,需要將其放入.scala文件,然后先使用scalac編譯,再用scala執(zhí) EDUCATIONTOCREATEABRIGHT EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHTobject,相當(dāng)于class的單個(gè)實(shí)例,通常在里面放一些靜態(tài)的field或者 的代碼;但是object不能定義接受參數(shù)的注意,object的constructor只會(huì)在其第一次被調(diào)用時(shí)執(zhí)行一次,以后再次調(diào)用就不會(huì)再次執(zhí)constructorobject通常用于作為單例模式的實(shí)現(xiàn),或者放class的靜態(tài)成員,比如工具方法

EDUCATIONTOCREATEABRIGHT如果有一個(gè)class,還有一個(gè)與class同名的object,那么就稱這個(gè)object是class的伴生對(duì)class是object的伴生類伴生類和伴生對(duì)象必須存放在一個(gè).scala文件之中伴生類和伴生對(duì)象,最大的特點(diǎn)就在于,互相可 privatefieldapply

EDUCATIONTOCREATEABRIGHTobject中非常重要的一個(gè)特殊方法,就是apply方?比如,Array類的伴生對(duì)象的apply方法就實(shí)vala=Array(1,2,3,4,?比如,Array類的伴生對(duì)象的apply方法就實(shí)vala=Array(1,2,3,4,?? (valname: { defapply(name:String)=}

EDUCATIONTOCREATEABRIGHT調(diào)整:修改主構(gòu)造器的屬性name修飾符為空,則報(bào)錯(cuò),因?yàn)閰?shù)

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHTScala中的Triat是一種特殊的概可以將Trait作為接口來(lái)使用,此時(shí)的Triat就與Java中的接口非常類類繼承trait后,必須實(shí)現(xiàn)其中的抽象方法,實(shí)現(xiàn)時(shí)不需要使用overrideScala不支持對(duì)類進(jìn)行多繼承,但是支持多重繼承trait,使用with關(guān)鍵字即

EDUCATIONTOCREATEABRIGHTtrait def o(name: }def } (valname:String)extends oTraitwithMakeFriendsTrait{ defsay o(name:String)=println(" o,"+name)def )=println("myname"+name+",yourname"+ }

EDUCATIONTOCREATEABRIGHT具方法的東西

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT進(jìn)行匹配

EDUCATIONTOCREATEABRIGHT即模式匹配,類替代switchcase,matchcase也被稱為模式匹配值,比1、2、3等;而Scala的matchcase可以匹配各種情況,比如變量的類型、集合的元素、有matchcase的語(yǔ)法如下:變量match{case值=>代碼}。如果值為下劃線,則代表了不滿足以上所有情況下的默認(rèn)情況如何處理。此外,matchcase中,只要一個(gè)case分支滿足并處理了,就不會(huì)繼續(xù)判斷下一個(gè)case分支了。(與Java不同,java的switchcase需要用break)matchcase語(yǔ)法最基本的應(yīng)用,就是對(duì)變量的值進(jìn)行模式匹

EDUCATIONTOCREATEABRIGHTdefdefjudgeGrade(grade:String)gradematchcase"A"=>println("Excellent")case"B"=>println("Good")case"C"=>println("Justsoso")case_=>println("youneedwork}}defjudgeGrade(name:String,grade:String){gradematch{case"A"=>println(name+",youareexcellent")case"B"=>println(name+",youaregood")case"C"=>println(name+",youarejustsoso")case_ifname=="leo"=>println(name+",youareagoodboy,comecase_=>println("youneedtowork}}

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHT案例:成績(jī)?cè)u(píng)價(jià)(升級(jí)版defdefjudgeGrade(name:String,grade:String){gradematch{case"A"=>println(name+",youareexcellent")case"B"=>println(name+",youaregood")case"C"=>println(name+",youarejustsoso")case_gradeifname=="leo"=>println(name+",yourgradeis"+case_grade=>println("youneedtoworkharder,yourgradeis"+}}

EDUCATIONTOCREATEABRIGHT Scala的模式匹配一個(gè)強(qiáng)大之處就在于,可以直接匹配類型,而不是值 importdefprocessException(e:Exception){ematch{casee1:IllegalArgumentException=>println("youhaveillegalarguments!exceptionis:"+casee2:FileNotFoundException=>println("cannotfindthefileyouneedreadorwrite!,exceptionis:"+e2)casee3:IOException=>println("yougotanerrorwhileyouwere ngIOoperation!exceptionis:"+e3)case_:Exception=>println("cannotknowwhichexceptionyouhave!")}}模式匹配之Array&

EDUCATIONTOCREATEABRIGHT對(duì)List進(jìn)行模式匹配,與Array類似,但是需要使用List特有的::操作defgreeting(arr:Array[String]){arrmatch{caseArray(girl1,girl2,girl3)=>println(girl1+"and"+girl2+"and"+caseArray("Leo",_*)=>println("Hi,Leo,pleaseintroduceyourfriendstocase_=>println("hey,whoare listmatch case"Leo"::Nil=>println("Hi,casegirl1::girl2::girl3::Nil=>println(girl1+"and"+girl2+"and"+case"Leo"::tail=>println("Hi,case_=>println("hey,whoare}}

EDUCATIONTOCREATEABRIGHT模式匹配之case

EDUCATIONTOCREATEABRIGHTScala中提供了一種特殊的類,用caseclass進(jìn)行 ,中文也可以稱作樣例類。caseclass其實(shí)有點(diǎn)類似于中相同的參數(shù),并返回caseclass對(duì)象。caseclassTeacher(name:String,subject:String)extendscaseclassStudent(name:String,classroom:String)extendsdefjudgeIdentify(p: ){pmatch{caseStudent(name,classroom)=>println(“Student:"+name+","+classroom)case_=>println("Illegalaccess,pleasegooutoftheschool!")}}模式匹配之case

EDUCATIONTOCREATEABRIGHT&

EDUCATIONTOCREATEABRIGHTOption通常會(huì)用于模式匹配中,用于判斷某個(gè)變量是有值還是沒(méi)有值,比null更加簡(jiǎn)潔明valvalgrades=Map("Leo"->"A","Jack"->"B","Jen"->"C")defgetGrade(name:String){valgrade=gradematchcaseSome(grade)=>println("yourgradeis"+caseNone=>println("Sorry,yourgradeinformationisnotinthe}}&

EDUCATIONTOCREATEABRIGHT

EDUCATIONTOCREATEABRIGHTScala的隱式轉(zhuǎn)換,其實(shí)最的就是定義隱式轉(zhuǎn)換函數(shù),即implicitconversionfunction。定義的隱式轉(zhuǎn)

EDUCATIONTOCRE

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論