[翻譯] 給Java程式設計師的Scala入門教學

作者: Chikei ( )   2013-10-22 14:51:07
譯自
http://docs.scala-lang.org/tutorials/scala-for-java-programmers.html
因為原文是用markdown撰寫,譯文也直接用markdown格式撰寫
github好讀版(?)
https://github.com/chikei/scala.github.com/blob/zh_TW/zh/tutorials/
scala-for-java-programmers.md
~~~正文分隔線~~~
## 介紹
此教學將對Scala語言以及編譯器做一個簡易的介紹。設定的讀者為具有程設經驗且想
要看Scala功能概要的人。內文假設讀者有著基本、特別是Java上的物件導向程設知識。
## 第一個例子
這邊用標準的 *Hello world* 程式作為第一個例子。雖然它很無趣,可是這讓我們在
僅用少量語言下演示Scala工具。程式如下:
object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}
Java程式員應該對這個程式的結構感到熟悉:有著一個 `main` 函式,該函式接受一
個字串陣列引數,也就是命令列引數;函式內容為呼叫已定義好的函式 `println` 並
用Hello world字串當引數。 `main` 函式沒有回傳值(它是程序函式)。因此並不需要
宣告回傳型別。
Java程式員不太熟悉的是包著 `main` 函式的 `object` 宣告。這種宣告引入我們一
般稱之 *Singleton* 的東西,也就是只有一個實體的類別。所以上面的宣告同時宣告
了一個 `HelloWorld` 類別跟一個這類別的實體,也叫做 `HelloWorld`。該實體會在
第一次被使用到的時候即時產生。
眼尖的讀者可能已經注意到這邊 `main` 函式的宣告沒有帶著 `static`。這是因為
Scala沒有靜態成員(函式或資料欄)。Scala程式員將這成員宣告在單實例物件中,而
不是定義靜態成員。
### 編譯這例子
我們用Scala編譯器 `scalac`來編譯這個例子。`scalac` 就像大多數的編譯器一樣,
它接受原碼檔當引數,並接受額外的選項,然後產生一個或多個物件檔。它產出的物
件檔為標準的Java class檔案。
如果我們將上面的程式存成 `HelloWorld.scala` 檔,編譯的指令為( `>` 是提示字
元,不用打):
> scalac HelloWorld.scala
這會在現在的目錄產生一些class檔案。其中一個會叫做 `HelloWorld.class`,裡面
包含著可被 `scala` 直接執行的類別。
### 執行範例
一旦編譯過後,Scala程式可以用 `scala` 指令執行。它的使用方式非常的像執行
Java程式的 `java` 指令,並且接受同樣的選項。上面的範例可以用以下的指令來執
行並得到我們預期的輸出:
> scala -classpath . HelloWorld
Hello, world!
## 與Java互動
Scala的優點之一是它非常的容易跟Java程式碼溝通。預設匯入所有 `java.lang` 底
下之類別,其他類別則需要明確匯入。
讓我們看個展示這點的範例。取得現在的日期並根據某個特定的國家排版成該國的格
式,如法國。
Java的標準函式庫定義了一些有用的工具類別,如 `Date` 跟 `DateFormat`。因為
Scala可以無縫的跟Java互動,這邊不需要以Scala實作同樣的類別

Links booklink

Contact Us: admin [ a t ] ucptt.com