天天看點

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

秉着簡潔而不失完整的的原則,這章隻把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           

結果類型也去掉了,編譯器類型推斷可得出,盡管如此帶上結果類型也是一個好習慣,便于其他人閱讀代碼。

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

Scala的Unit結果類型指的是函數沒有傳回有用的值。Scala的Unit類型比較接近Java的void類型,而且實際上Java裡每一個傳回void的方法都被映射為Scala裡傳回Unit的方法。是以結果類型為Unit的方法,僅僅是為了它們的副作用而運作

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

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

本文作者:山海經

原文連結