




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度專業(yè)車庫(kù)租賃與物業(yè)管理合同
- 服裝批發(fā)市場(chǎng)垃圾清運(yùn)合同
- 2025年度多人共同經(jīng)營(yíng)網(wǎng)店借款及利潤(rùn)分配合同
- 二零二五年度玉器珠寶市場(chǎng)拓展與區(qū)域代理合同
- 2025年度安全無(wú)憂型個(gè)人租房合同
- 2025年度企業(yè)節(jié)能減排改造補(bǔ)貼協(xié)議書(shū)
- 2025年度員工心理健康關(guān)懷上班協(xié)議合同全新版
- 2025年度文化場(chǎng)館設(shè)施維護(hù)勞務(wù)協(xié)議書(shū)
- 2025年度影視演員場(chǎng)記助理職業(yè)素養(yǎng)培訓(xùn)聘用合同
- 2025年佳木斯職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)新版
- 中國(guó)春節(jié)ppt英文版 Chinese New Year
- 高中數(shù)學(xué)《6.2 排列與組合》課件與導(dǎo)學(xué)案
- 腸道健康講座活動(dòng)策劃
- 小學(xué)三年級(jí)下冊(cè)數(shù)學(xué)教案3篇
- 《云南紅色旅游》課件
- 孤殘兒童試題庫(kù)(含答案)
- 新人美版高中美術(shù)選擇性必修“繪畫(huà)”《認(rèn)識(shí)多面繪畫(huà)-繪畫(huà)的工具與材料》教學(xué)設(shè)計(jì)
- premiere設(shè)計(jì)畢業(yè)論文
- 三年級(jí)體育教學(xué)進(jìn)度表
- 醫(yī)務(wù)人員法律法規(guī)專題培訓(xùn)
- 《紅樓夢(mèng)第四回》課件
評(píng)論
0/150
提交評(píng)論