Scala語言是一個較爲抽象的語言,因爲這門語言結合了面向對象的編程思想和麪向函數的一門語言;
函數式編程功能強大,用起來倍爽,所以一定熟練掌握;
Scala是一種針對JVM 將面向函數和麪向對象技術組合在一起的編程語言。Scala編程語言近來抓住了很多開發者的眼球。它看起來像是一種純粹的面向對象編程語言,而又無縫地結合了命令式和函數式的編程風格。Scala融匯了許多前所未有的特性,讓開發者能夠很好的而同時又運行於JVM之上。隨着大數據的日益發展,scala必定會成爲必不可少的開發語言。
爲什麼要學習scala?
1、代碼規範而且好看:這是框架設計師第一個要考慮的問題,框架的用戶是應用開發程序員,API是否優雅直接影響用戶體驗。
2、速度快:Scala語言表達能力強,一行代碼抵得上Java多行,開發速度快;Scala是靜態編譯的,所以和JRuby,Groovy比起來速度會快很多。
3、能融合到Hadoop生態圈
4.因爲我們要學習的spark和kafka等它的底層語言是scala寫的,學習scala能夠有助於我們編寫spark代碼及閱讀源碼。
首先安裝jdk,推薦1.8版本
下載scala-2.10.6.msi文件解壓安裝即可
注:環境變量會自動進行安裝
學習任何一門語言,都有着相同的路數。所以對於現在的我們而言。Scala的學習相對來說會容易一些。
val name=」max」
注意:scala有個原則就是極簡原則,不用寫的東西一概不寫。
定義變量有兩種形式
一種是像上面那樣用val修飾另一種是var進行修飾
val 定義的變量不可變相當與java中的final
用表達式進行賦值
Val x=1
Val y=if(x>0) 1 else -1
混和表達式
Val 1 =if (x>0) 1 else 「jay」
需要注意的是any是所有的父類,相當於java裏的object
else缺失的表達式
val p=if (x>5) 1
注意:Unit相當於java中的void
if 語句定義變量加深學習
請編寫一個用if, else if, else賦值的例子
Val x=0
Val z={
…
}
For循環區間:
Val res=1 to 10
for(i<-res){
println(i)
}
for 循環數組
val arr=Array(「a」,」b」,」c」)
for(i<-arr)
println(i)
高級for循環
for (i<- 1 to 4;j<- 1 to 4 if i!=j)
println(10*i+j+」 」)
使用for循環生成一個數組
Val z=for (i<-1 to 3) yield i*10
加深練習
需求說明:定義一個數組val a1=Array(1,2,3,4,5,6,7,8,9)把其中的偶數取出。
Val lazyVal={println(「I am too lazy」);1}
lazy val lazyVal={println(「I am too lazy」);1}
定義一個方法:
def method(a:Int,b:Int):Int=a*b
method(3,5)
定義一個函數:
Val f1=(x:Int,y:Int)=>x+y
f1 (1,2)
匿名函數
(x:Int,y:Int)=>x+y
匿名函數舉例
在函數式編程語言中,函數是「頭等公民」,它可以像任何其他數據類型一樣被傳遞和操作,函數可以在方法中傳遞。
def m1(f(Int,Int)=>Int)={f(2,3)}
val f1=(x:Int,y:Int)=>x+y
val f1=(x:Int,y:Int)=>x+y
val a=m1(f1)
val b=m1(f2)
通過方法轉變爲函數
List
不可變的list
可變的list
val lst0=ListBuffer[Int](1,2,3)
val lst1=new ListBuffer[Int]
lst1+=4 lst1發生改變
lst1+=5
val lst4=lst1:+6 lst1沒有改變
Set
Map
Tuple
Val t=()