scala基礎(chǔ)(二)-java開發(fā)java經(jīng)驗技巧

scala基礎(chǔ)(二)-java開發(fā)java經(jīng)驗技巧

ID:30791583

大小:87.92 KB

頁數(shù):7頁

時間:2019-01-03

scala基礎(chǔ)(二)-java開發(fā)java經(jīng)驗技巧_第1頁
scala基礎(chǔ)(二)-java開發(fā)java經(jīng)驗技巧_第2頁
scala基礎(chǔ)(二)-java開發(fā)java經(jīng)驗技巧_第3頁
scala基礎(chǔ)(二)-java開發(fā)java經(jīng)驗技巧_第4頁
scala基礎(chǔ)(二)-java開發(fā)java經(jīng)驗技巧_第5頁
資源描述:

《scala基礎(chǔ)(二)-java開發(fā)java經(jīng)驗技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、Scala慕礎(chǔ)(二)-Java開發(fā)Java經(jīng)驗技巧Scala基礎(chǔ)(二)木文作者:ImportNew?朱偉杰未經(jīng)許可,禁止轉(zhuǎn)載!這個章節(jié)的內(nèi)容包括?apply?對象?函數(shù)即對彖?包?模式匹配?caseclasstry-catch-finallyapply方法當一個類或者對象有一個主要的用途的時候,apply方法可以提供一種很好的語法糖(syntacticsugar)□scala>classFoo{}definedclassFooscala>objectFooMaker{defapply0=newFoo

2、I}definedmoduleFooMakerscala>valnewFoo二FooMaker()newFoo:Foo=Foo@5b83f762或者scala>classBar{defapply()二0I}definedclassBarscala>valbar=newBarbar:Bar=Bar@47711479scala>bar()res8:Int=0這樣來看實例對象,好像我們是在調(diào)用一個方法。后面會詳細介紹這個!對象對象都是用來保持一個類的單個實例。經(jīng)常在工廠里用到。objectTimer{va

3、rcount=0defcurrentCount():Long={count+二1count}}怎么去使用scala>Timer,currentCount()resO:Long二1類和對象可以重名。這樣的對象被稱為"伴隨對象(CompanionObject)。我們一般在工廠里使用伴隨對象。這里有個簡單的示例,它的作用是使得創(chuàng)建對象實例的吋候不需要用'neW。classBar(foo:String)objectBar{defapply(foo:String)=newBar(foo)}函數(shù)即對象在Scal

4、a里,我們經(jīng)常討論對象-函數(shù)編程。它表示什么呢?函數(shù)究竟是什么?函數(shù)是一系列的traitc確切地說,有一個參數(shù)的函數(shù)是Functionltrait的一個實例。這個trait定義了我們之前學(xué)到的apply()的語法糖,它允許你像調(diào)用函數(shù)一樣調(diào)用對象。scala>objectaddOncextendsFunctionl[Int,Int]{defapply(m:Int):Int=m+1definedmoduleaddOnescala>addOne(1)res2:Tnt二2在Scala里有Functionl

5、到22。為什么是22?這是一個任意的魔數(shù)。我從來沒有遇到需要22個參數(shù)的函數(shù),所以這個數(shù)字還是很有效的。apply的語法糖使得對彖和函數(shù)的編程能夠組合在一起。你可以把對彖作為參數(shù)進行傳遞,同吋也可以把它們當作函數(shù)使用,而實際上函數(shù)也只不過是類的實例。那這樣是不是意味著每次你在類里定義一個方法,那么你就會得到Function的-個實例呢?不,類里的方法僅僅是普通的方法。在repl里單獨定義的方法才是Function的實例。類也可以繼承函數(shù),然后這些類的實例就可以通過()來調(diào)用。scala>classA

6、ddOneextendsFunctionl[Int,Int]{defapply(m:Int):Int=m+1I}definedclassAddOnescala>valplusOne=newAddOne()plusOne:AddOne二scala>plusOne(1)resO:Int二2extendsFunctionl[Int,Int]的一種比較好的簡寫是extends(Int=>Int)classAddOneextends(Tnt=>Int){defapply(m:Int):Int=m+1包你可以通

7、過包來組織你的代碼。packagecom.twitter,example在一個文件的頂部聲明包,那么這個文件里的所冇的東西都是在這個包里。值和函數(shù)不能在類和對象外而。對象對丁組織靜態(tài)函數(shù)是很冇用的。packagecom.twitter,exampleobjectcolorHolder{valBLUE二"Blue"valRED二〃Red〃}現(xiàn)在你可以直接訪問里面的成員printin(,zthecoloris:"+com.twitter,example.colorHolder.BLUE)當你在scala

8、repl里定義這個對象11寸,它會提示什么:scala>objectcolorHolder{IvalBlue="Blue"valRed="Red"I}definedmodulecolorHolder上面的信息暗示你scala的設(shè)計者把對象設(shè)計成為Scala的模塊系統(tǒng)的一部分。模式匹配Scala中最有用的一個功能。對值進行匹配valtimes二1timesmatch{case1=>onecase2=>case_二〉"someothernumber77}"受保護的匹配ti

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。