欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Scala基礎(chǔ)簡(jiǎn)介及代碼示例

 更新時(shí)間:2017年10月18日 15:46:21   作者:開心果汁  
這篇文章主要介紹了Scala基礎(chǔ)簡(jiǎn)介及代碼示例,小編覺得挺不錯(cuò)的,這里給大家分享下,供需要的朋友參考。

一、主要內(nèi)容

Scala中變量的聲明與函數(shù)定義
Scala中的控制結(jié)構(gòu)
Scala中的數(shù)據(jù)類型

1:變量聲明與函數(shù)定義

變量聲明:val 和 var ,兩者的區(qū)別是val聲明的變量是不可變的,而var聲明的變量可變

帶返回值

scala> def max(x:Int,y:Int):Int = { 
   |   if(x>y) x 
   |   else  y 
   | } 
max: (x: Int, y: Int)Int 
scala> max(1,2) 
res5: Int = 2 

不帶返回值

scala> def helloworld()=println("HelloWorld") 
helloworld: ()Unit 

2:控制結(jié)構(gòu)

1) 判斷(if)

類似于上邊函數(shù)定義中的max函數(shù)

2) 循環(huán)(while/do)

while 語(yǔ)句包括狀態(tài)判斷和循環(huán)體,只要當(dāng)前狀態(tài)判斷為真,就執(zhí)行循環(huán)體一遍,然后進(jìn)行下一狀態(tài)判斷,判斷為假時(shí)終止判斷,形如 while (A)B

do語(yǔ)句和while相反,先執(zhí)行循環(huán)體一遍,然后進(jìn)行狀態(tài)判斷,狀態(tài)判斷為真,則繼續(xù)執(zhí)行循環(huán)體,否則終止循環(huán),形如 do B while(A)

scala> var m =3 
m: Int = 3 

scala> while(m!=0){ 
   |  println(m) 
   |  m -= 1 
   | } 
3 
2 
1 

scala> var n =3 
n: Int = 3 

scala> do{ 
   |  println(n) 
   |  n -= 1 
   | }while(n!=0) 
3 
2 
1 

3) 枚舉(for)

for的兩種實(shí)現(xiàn)

scala> for(i<- 1 to 3) 
   |   println(i) 
1 
2 
3 

scala> for(i<- 1 until 3) 
   |   println(i) 
1 
2 

4) 匹配(match表達(dá)式)

scala中的match類似于其他語(yǔ)言中的switch,從上往下進(jìn)行匹配

scala> val a = "gyt" 
a: String = gyt 

scala> a match{ 
   |  case "gyt" => println("OK") 
   |  case "cyan" => println("no") 
   | } 
OK 

5) 異常處理(throw/try)

Scala通過throw拋出一個(gè)異常,其異常捕獲和處理與java十分類似

scala> if(true){ 
   |  println("throw new exception") 
   |  throw new IllegalArgumentException 
   | } 
throw new exception 
java.lang.IllegalArgumentException 
 ... 35 elided 
scala> try{  
   | val file = new FileReader("input.txt")  
   | }catch{  
   | case ex: FileNotFoundException => //handle missing file  
   | case ex: IOException => //handle other I/O error  
   | }finally{  
   | println("end") 
   | } 
end 

6) 輸出(print/println)

一個(gè)不換行輸出,一個(gè)換行輸出

7) 輸入(readline)

輸入通常使用read函數(shù),readline是從控制臺(tái)輸如一行,指定類型為readT,T為類型,例如

readscala> val name = readLine(“Your Name: \n”) 
warning: there was one deprecation warning; re-run with -deprecation for details 
Your Name: 
name: String = thinkgamer

8) 其他語(yǔ)句

return語(yǔ)言表示返回某個(gè)值,但是Scala事實(shí)上無(wú)需使用return語(yǔ)句,對(duì)于函數(shù)來(lái)說,其默認(rèn)返回值是最后出現(xiàn)的一個(gè)值,不用特別注明,如需要返回的值,并非最后出現(xiàn)時(shí),可在函數(shù)體后加上該值的標(biāo)識(shí)符使之出現(xiàn),聲明函數(shù)時(shí)使用return語(yǔ)句,必須聲明返回值類型,例如 def max:T = {return}

break/continue在C++中非常常見的控制結(jié)構(gòu)語(yǔ)句,但在Scala中是不必要的,可以使用布爾值類型的兩通過if語(yǔ)句進(jìn)行控制

3:數(shù)據(jù)結(jié)構(gòu)

1) 數(shù)組

使用new來(lái)實(shí)例化一個(gè)類,當(dāng)你創(chuàng)建一個(gè)對(duì)象的實(shí)例時(shí),你可以使用數(shù)值或者類型參數(shù)

scala> val abc = new Array[String](3) 
abc: Array[String] = Array(null, null, null) 
scala> abc(0)="thinkgamer" 
scala> abc(1)="cyan" 
scala> abc(2)="GQ" 
scala> for(i<- 0 to 2) 
   |  println(abc(i)) 
thinkgamer 
cyan 
GQ 

這里也說明下為什么Scala使用()來(lái)訪問數(shù)組元素,在Scala中,數(shù)組和其他普遍的類的定義一樣,沒有什么特別之處,當(dāng)你某個(gè)值后面使用()時(shí),Scala將其翻譯成對(duì)應(yīng)對(duì)象的apply方法,因此本例中abc(0)其實(shí)調(diào)用abc.apply(0)方法,這種表達(dá)方法不僅僅只限于數(shù)據(jù),對(duì)于任何對(duì)象,如果在其后面使用(),都將調(diào)用該對(duì)象的apply方法,同一,日過對(duì)某個(gè)使用()的對(duì)象復(fù)制,比如
abc(0)=”thinkgamer”

scala將這種復(fù)制轉(zhuǎn)換為該對(duì)象的update方法,也就是abc.update(0,”thinkgamer”),因此上邊的例子也可以使用傳統(tǒng)的方法調(diào)用,可以寫成:

scala> val new_abc = new Array[String](3) 
new_abc: Array[String] = Array(null, null, null) 
scala> new_abc.update(0,"aaa") 
scala> new_abc.update(1,"bbb") 
scala> new_abc.update(2,"ccc") 
scala> for(i<- 0 to 2) 
   |  println(new_abc(i)) 
aaa 
bbb 
ccc 

從這點(diǎn)來(lái)收,數(shù)組在scala中并不是某種特殊的數(shù)據(jù)類型,和普通的類并沒有什么區(qū)別

不過scala還是提供了初始化數(shù)組的簡(jiǎn)單的方法,上述的例子可以這樣寫:

scala> val abc = Array("thinkgamer","cyan","GQ") 
abc: Array[String] = Array(thinkgamer, cyan, GQ) 

數(shù)組的輸出可以采用while或者foreach或者for進(jìn)行輸出
scala> val abc = Array("thinkgamer","cyan","GQ") 
abc: Array[String] = Array(thinkgamer, cyan, GQ) 
scala> var i = 0 
i: Int = 0 
scala> while(i<abc.length){ 
   |  println(abc(i)) 
   |  i+=1 
   | } 
thinkgamer 
cyan 
GQ 
scala> abc.foreach(str=>println(str)) 
thinkgamer 
cyan 
GQ 

2):Lists

Scala的List和Java不同,不能被改變,這樣做的一個(gè)好處是方法與方法之間關(guān)聯(lián)性較小,從而方法變得更可靠和重用性高,使用這個(gè)規(guī)則也就意味著變量的設(shè)置是不可修改的,這也就避免了多線程訪問的互鎖問題

scala> val one = List(1,2,3) 
one: List[Int] = List(1, 2, 3) 
scala> val two = List(4,5) 
two: List[Int] = List(4, 5) 
scala> val three = one:::two 
three: List[Int] = List(1, 2, 3, 4, 5) 

:::方法表示連接兩個(gè)列表,當(dāng)然列表定義了::方法(右操作符),用于向列表添加元素

scala> val four = three::6::7::Nil 
four: List[Any] = List(List(1, 2, 3, 4, 5), 6, 7) 

scala> val five = 1::2::3::4::Nil 
five: List[Int] = List(1, 2, 3, 4) 

Nil表示空列表

Scala的List類還定義了其他很多很有用的方法,比如head,last,length,reverse,tail等這里就不一一說明了,具體可以參考List的文檔

3) Tuples

Scala中另外一個(gè)很有用的容器類是Tupels,和Lists不同的Tuples可以包含不同類型的數(shù)據(jù),而List只能包含同類型的數(shù)據(jù),Tuples在方法需要返回多個(gè)結(jié)果時(shí)非常有用(Tuple對(duì)應(yīng)數(shù)學(xué)的矢量的概念)

一旦定義了一個(gè)元組,可以使用._和索引來(lái)訪問元組的元素(矢量的分量,注意和數(shù)組不同的是,元組的索引從1開始)

scala> val pair = (22,"one") 
pair: (Int, String) = (22,one) 
scala> println(pair._1) 
22 
scala> println(pair._2) 
one 

元組的實(shí)際類型取決于它的分量的類型,比如上邊的pair的類型實(shí)際為Tuple2[Int,String],目前Scala支持的元組的最大長(zhǎng)度為22,如果有需要,你可以擴(kuò)展更長(zhǎng)的元組

4) Set

scala> var set = Set("a","b") 
set: scala.collection.immutable.Set[String] = Set(a, b) 
scala> set+="c" 
scala> set 
res8: scala.collection.immutable.Set[String] = Set(a, b, c) 
scala> println(set.contains("c")) 
true 

缺省情況Set為Immutable Set,如果你需要使用可修改的集合類(Set類型),你可以使用全路徑來(lái)指明Set,比如scala.collection.mutalbe.Set

5) Map

Map的基本用法如下(Map類似于其他語(yǔ)言中的關(guān)聯(lián)數(shù)據(jù)如PHP)

scala> val roman =Map(1->"I",2->"II") 
roman: scala.collection.immutable.Map[Int,String] = Map(1 -> I, 2 -> II) 
scala> println(roman(1)) 
I 
scala> println(roman(2)) 
II 

總結(jié)

以上就是本文關(guān)于Scala基礎(chǔ)簡(jiǎn)介及代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)瀏覽本站其他相關(guān)專題,有什么問題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • 淺談Scala的Class、Object和Apply()方法

    淺談Scala的Class、Object和Apply()方法

    下面小編就為大家?guī)?lái)一篇淺談Scala的Class、Object和Apply()方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-05-05
  • Scala排序算法之歸并排序解析

    Scala排序算法之歸并排序解析

    這篇文章主要介紹了Java排序算法之歸并排序解析,簡(jiǎn)介:歸并排序是一種經(jīng)典的排序算法,它采用分治的思想,將待排序的數(shù)組不斷地分割成小的子數(shù)組,然后再將這些子數(shù)組合并成有序的數(shù)組,需要的朋友可以參考下
    2023-10-10
  • Scala實(shí)現(xiàn)二分查找的代碼實(shí)例

    Scala實(shí)現(xiàn)二分查找的代碼實(shí)例

    這篇文章主要介紹了Scala實(shí)現(xiàn)二分查找的代碼實(shí)例,找到數(shù)組的中間值,和需要查找的值進(jìn)行對(duì)比:如果中間值等于查找值,直接返回中間值下標(biāo);如果中間值大于查找值,則遞歸向左邊查找;如果中間值小于查找值,則遞歸向右邊查找,直到找完所有的元素,需要的朋友可以參考下
    2023-11-11
  • Scala基礎(chǔ)簡(jiǎn)介及代碼示例

    Scala基礎(chǔ)簡(jiǎn)介及代碼示例

    這篇文章主要介紹了Scala基礎(chǔ)簡(jiǎn)介及代碼示例,小編覺得挺不錯(cuò)的,這里給大家分享下,供需要的朋友參考。
    2017-10-10
  • Scala基礎(chǔ)語(yǔ)法總結(jié)

    Scala基礎(chǔ)語(yǔ)法總結(jié)

    這篇文章主要介紹了Scala基礎(chǔ)語(yǔ)法總結(jié),需要的朋友可以參考下
    2023-10-10
  • Scala安裝及環(huán)境圖文配置教程

    Scala安裝及環(huán)境圖文配置教程

    這篇文章主要為大家詳細(xì)介紹了Scala安裝及環(huán)境圖文配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 利用Gradle如何構(gòu)建scala多模塊工程的步驟詳解

    利用Gradle如何構(gòu)建scala多模塊工程的步驟詳解

    這篇文章主要給大家介紹了關(guān)于如何利用Gradle構(gòu)建scala多模塊工程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Windows7下安裝Scala 2.9.2教程

    Windows7下安裝Scala 2.9.2教程

    這篇文章主要介紹了Windows7下安裝Scala 2.9.2教程,本文給出了Scala的安裝步驟以及在Eclipse IDE安裝Scala的步驟,需要的朋友可以參考下
    2015-03-03

最新評(píng)論