Scala語法

banq發表於2012-04-22
這是一篇老的文章:scala syntax primer,從Java語法角度來看Scala語法,非常方便Java程式設計師轉變到Scala上。

基礎部分:

1. Scala的類名稱無需象Java那樣要與檔名一致,可以將任何Scala類放入任何Scala檔案中。

2. 分號是可選,不一定象Java那樣每行一個分號結束,如果需要將多個statements放在一行,需要用分號分離。

3.每個值都是物件,沒有Java的原始型別,既然都是物件,都可以呼叫其中方法,如123是個值數字,在Java中是int型別,但是Scala中可以123.toString()。

4.Scala有顯著的轉換Mixin,你可以呼叫原來類中不存在的方法。

5.Scala遵循統一訪問原則:"Uniform Access Principle" 意味著變數和無引數的函式都是以同樣方式訪問,只要用def替代val 或var即可(後者是變數的兩種型別。)

6. Scala能夠直接支援XML. 將scala.xml.Elem 分配給變數val x:
val x = <head><title>The Title</title></head>

也可以混合使用:
val title = "The Title"
val x = <head><title>{ title }</title></head>


Keywords關鍵詞修飾語法部分:

1.沒有Java的static關鍵詞. 在Scala中使用Object來替代static,Object是單態的。

2.Scala沒有break 或 continue. 透過函式程式設計風格來降低這種要求(banq注:也許Scala難點所在)。

3.Access modifiers such as protected and private can include a scope in square brackets, such as private[this] or protected[MyPackage1.MyPackage2]. The default access is public.

4. val 是用於不可變變數,相當於Java中增加了final,而var是可變變數

5.一個import可以匯入多個:
import java.text.{DateFormat,SimpleDateFormat}

6. 匯入符合可以改名:
import java.util.{Date=>UDate}
import java.sql.{Date=>SDate}

7. 如果匯入改名為_, 除了規定的符號,其他都什麼不匯入:
import java.util.{Date=>_,_}

8. abstract 只用於抽象class和 traits. 對於函式 val或var的抽象表達方式,你只需要忽略=後面的body部分即表示他們是抽象的

9.當需要覆蓋超級類中一個方法時,覆蓋的修改器必須指定,如果沒有指定,將不會覆蓋。

10.新的修飾語: lazy, implicit

[該貼被banq於2012-04-22 10:22修改過]

相關文章