Java程式設計師的Scala的入門教程
一、簡介
本文僅在對Scala語言和其編譯器進行簡要介紹。本文的目的讀者是那些已經具有一定程式設計經驗,而想嘗試一下Scala語言的人們。要閱讀本文,你應當具有基礎的面向物件程式設計的概念,尤其是Java語言的。
作為學習Scala的第一步,我們將首先寫一個標準的HelloWorld,這個雖然不是很有趣,但是它可以讓你對Scala有一個最直觀的認識而不需要太多關於這個語言的知識。我們的Hello world看起來像這樣:
1 |
object HelloWorld
{ |
2 |
def main(args : Array[String])
{ |
3 |
println( "Hello,
world!" ) |
4 |
} |
5 |
} |
程式的結構對Java程式設計師來說可能很令人懷念:它由一個main函式來接受命令列引數,也就是一個String陣列。這個函式的唯一一行程式碼把我 們的問候語傳遞給了一個叫println的預定義函式。main函式不返回值(所以它是一個procedure method)。所以,也不需要宣告返回型別。
對於Java程式設計師比較陌生的是包含了main函式的object語句。這樣的語句定義了一個單例物件:一個有且僅有一個例項的類。object語 句在定義了一個叫HelloWorld的類的同時還定義了一個叫HelloWorld的例項。這個例項在第一次使用的時候會進行例項化。
聰明的讀者可能會發現main函式並沒有使用static修飾符,這是由於靜態成員(方法或者變數)在Scala中並不存在。Scala從不定義靜態成員,而通過定義單例object取而代之。
2.1 編譯例項
我們使用Scala編譯器“scalac”來編譯Scala程式碼。和大多數編譯器一樣,scalac 接受原始檔名和一些選項作為引數,生成一個或者多個目標檔案。scala編譯生成的產物就是標準的Java類檔案。
假設我們吧上述程式碼儲存為檔案HelloWorld.scala,我們使用下面的命令編譯它(大於號“>”表示命令提示符,你不必輸入它)
1 |
>
scalac HelloWorld.scala |
這將會在當前目錄生成一系列.class檔案。其中的一個名為HelloWorld.class 的檔案中定義了一個可以直接使用scala命令執行的類。下文中你可以看到這個例子。
2.2 執行例項
一旦完成編譯,Scala程式就可以使用scala命令執行了。scala的用法和java很相似,並且連選項也大致相同。上面的例子就可以使用下面的命令執行,這將會產生我們所期望的輸出。
1 |
>
scala -classpath . HelloWorld |
2 |
3 |
Hello,
world! |
Scala的一個強項在於可以很簡單的於已有的Java程式碼互動,所有java.lang中的類都已經被自動匯入了,而其他的類需要顯式宣告匯入。
來看看演示程式碼吧。我們希望對日期進行格式化處理,比如說用法國的格式。
Java類庫定義了一系列很有用的類,比如Date和DateFormat。由於Scala於Java能夠進行很好的互動,我們不需要在Scala類庫中實現等效的程式碼,而只需直接吧Java的相關類匯入就可以了:
01 |
import java.util.{Date,
Locale} |
02 |
import java.text.DateFormat |
03 |
import java.text.DateFormat._ |