Scala簡介及該注意的基本小知識點
阿新 • • 發佈:2018-12-25
一、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:_*))