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的Unit結果型別指的是函式沒有返回有用的值。Scala的Unit型別比較接近Java的void型別,而且實際上Java裡每一個返回void的方法都被對映為Scala裡返回Unit的方法。因此結果型別為Unit的方法,僅僅是為了它們的副作用而執行
注:java裡的i++和++i在scala裡是行不通的。
本文來自雲棲社群合作伙伴“開源中國”
本文作者:山海經
相關文章
- Go 學習筆記 - Go 基礎語法(2)Go筆記
- Hive學習筆記:基礎語法Hive筆記
- Kotlin學習筆記-基礎語法Kotlin筆記
- Scala學習筆記2筆記
- Scala學習 1.1 Scala基礎與語法入門實戰
- Go學習筆記 - Go 基礎語法(1)Go筆記
- Erlang學習筆記(三)Erlang基礎語法筆記
- Scala基礎語法
- Python 3 學習筆記之——基礎語法Python筆記
- scala基礎語法-----Spark基礎Spark
- Scala 的基礎語法
- go 學習記錄--基礎語法Go
- swift學習筆記《2》-swift語法Swift筆記
- Go 基礎語言學習筆記Go筆記
- Scala基礎學習
- 菜鳥學習筆記:Java基礎篇1(基礎語法、物件導向)筆記Java物件
- Java基礎 語法筆記Java筆記
- Java基礎語法筆記Java筆記
- Scala基本語法學習
- Scala學習筆記筆記
- c語言程式基礎學習筆記C語言筆記
- Erlang學習筆記(二)Erlang基礎語法之If、Case的使用筆記
- 學習Rust 基礎語法Rust
- markdown學習(基礎語法)
- Scala 學習筆記(2)之類和物件筆記物件
- 真香,理解記憶法學習Python基礎語法Python
- scala學習筆記:各種奇怪的寫法筆記
- ABAP學習筆記-基礎語法-05-字串的處理(02)筆記字串
- R語言學習筆記:基礎知識R語言筆記
- Java學習之基礎語法Java
- CSS 基礎學習筆記CSS筆記
- node基礎學習筆記筆記
- Web基礎學習筆記Web筆記
- Redis基礎學習筆記Redis筆記
- Shell 學習筆記 基礎筆記
- Oracle基礎學習筆記Oracle筆記
- Java基礎學習筆記Java筆記
- scala學習筆記:控制抽象筆記抽象