1. 程式人生 > >Scala簡介及該注意的基本小知識點

Scala簡介及該注意的基本小知識點

一、Scala簡介及其特點

Scala是一門混合了函式式和麵向物件的語言,擁有以下特徵:

        1、擁有基於事件的併發模型

2、既支援命令式、也支援函式式

3、純面向物件(所有型別都是物件)

4、可以很好的與Java結合

5、強制使用自適應靜態型別

二、注意的基本知識點

1、var和val

不變性指的是變數本身,而不是變數所引用的例項。比如:val buffer=new StringBuffer(),就不能把buffer指向其他的引用了,但是buffer內容可以變

注意:儘量優先使用val,可以提升不變性和函式式風格

        2、to()和until()方法

to不包含上界,until()包含

3、foreach()

(1 to 3).foreach(i => print(i +","))
Range類的foreach()方法,接受一個函式值作為引數。=>將左邊的引數列表和右邊的實現分離開來

4、富封裝類

1 to 3實際上是1.to(3),當Scala確定Int無法滿足要求時,就會自動應用intWrapper()方法把Int轉換為scala.runtime.RichInt,然後呼叫它的to()方法。像這樣的還有RichInt,RichDouble,RichBoolean

注意:Int相當於Java的int

5、方法的點和括號

如果方法有0或者1個引數,電荷括號可以丟掉。如:1.to(3)可以寫成1 to 3

6、元組元素可以同時賦給多個變數

val(fName,lName,email)=("fan","wang","[email protected]")

也可以這樣賦值:
val value=("fan","wang","[email protected]")

此時可以這樣訪問元素:value._1,value._2

7、使用"""....“”“建立多行字串

8、==是基於值的比較,eq()基於身份的比較

9、scala預設的類、欄位、方法都是public,用protected修飾的成員只對本類及派生類可見,同一個包類的其他類無法訪問

10、對於使用了return的方法,就需要顯示提供返回型別;最好避免使用return語句,讓編譯推演返回型別

11、傳遞變引數

//離散的實參
def sum(values:Int*)=values.foldLeft(10){_+_}
println(sum(2,3,5))//輸出20

//陣列做實參(:_*將陣列展開成離散值)
val numbers=Array(2,3,5)
println(sum(numbers:_*))