Scala學習筆記(2)-基礎語法

技術小能手發表於2018-10-26

秉著簡潔而不失完整的的原則,這章只把Scala主要語法和與Java不同的內容列出來,以後章節也如此,內容以簡潔為主,太長了自己都被嚇著了,也沒耐心看下去。

1.Scala直譯器使用,這裡不做介紹,有IDE這玩意一般用不著。

2.基本資料型別

Java原始型別在scala包裡都有對應的類。例如,scala.Boolean對應著Java的boolean。scala.Float對應著Java的float。當你把你的Scala程式碼編譯成Java位元組碼,Scala編譯器將使用Java的原始型別以便獲得其帶來的效能益處。

3.定義變數

Scala有兩種變數,val和var。val類似於Java裡的final變數。一旦初始化了,val就不能再賦值了。與之對應的,var如同Java裡面的非final變數。var可以在它生命週期中被多次賦值。

val msg1=”hello scala”

var msg2=”hello world”

仔細看上面定義的2個變數好像都沒有型別宣告,這是怎麼回事呢?這就要說到Scala的型別推斷(type inference),因為你用了一個字串來初始化msg變數,Scala推斷msg的型別是String。你也可以顯式地定義型別,有些時候也應該這麼做。顯式的型別標註不但可以確保Scala編譯器推斷你傾向的型別,還有助於以後程式碼的閱讀。

val msg : String=”hello scala” 與Java不同的是型別宣告在變數後面,用一個”:”分隔。

4.定義函式

上面已經定義了變數,現在開始學習怎麼定義一個函式

def max(x: Int, y: Int): Int = { //定義函式 
    if (x > y) x 
    else y 
  }

max(3,7)  //呼叫函式

自己對照看與 java函式有什麼不同,函式體只有一句的大括號可以省略寫成 :

def max(x: Int, y: Int) = if (x > y) x else y

結果型別也去掉了,編譯器型別推斷可得出,儘管如此帶上結果型別也是一個好習慣,便於其他人閱讀程式碼。

image

Scala的Unit結果型別指的是函式沒有返回有用的值。Scala的Unit型別比較接近Java的void型別,而且實際上Java裡每一個返回void的方法都被對映為Scala裡返回Unit的方法。因此結果型別為Unit的方法,僅僅是為了它們的副作用而執行

注:java裡的i++和++i在scala裡是行不通的。

本文來自雲棲社群合作伙伴“開源中國”

本文作者:山海經

原文連結


相關文章