指令互動環境


Scala運行於JVM之上,為了要能執行Scala相關程式,你必須先安裝好JDK,所要求的版本至少為JDK 1.4以上,建議安裝 JDK 5.0以上版本,以在Scala中可使用Java的最新特性,請至 Java 官方網站 下載JDK並進行安裝。

接著請至 Scala 官方網站 下載Scala,下載完成後解開壓縮檔案,並設置PATH環境變數中帶有Scala的bin資料夾(當然,JDK的bin目錄資訊也必須先設置好),接著進入文字模式,鍵入scala指令,你可以看到以下畫面:
>scala
Welcome to Scala version 2.7.7.final (Java HotSpot(TM) Client VM, Java 1.6.0_16)
.
Type in expressions to have them evaluated.
Type :help for more information.


這是Scala的指令互動環境,可以讓你很快地撰寫一些小指令進行測試(經常的,你只是要看看某個指令這麼用對不對,或會有什麼結果),先來看看幾個簡單的互動:
scala> 1+2
res0: Int = 3

scala> res0
res1: Int = 3

這執行了1+2,顯示結果為3,res0代表了互動環境為你暫時命名的變數(如果執行結果沒有指定給任何變數的話),你之後可以直接呼叫該名稱來取得執行結果。res0之後是冒號(:),接著是資料型態,Int表示結果是一個整數。

在指令互動環境下按Ctrl+A可以將游標移至行首,按Ctrl+E可以將游標移至行尾。

再來看看其它的一些互動:
scala> (1 to 3).foreach(println)
1
2
3

scala> def doSome() {
     |     println("Hi")
     | }
doSome: ()Unit

scala> doSome()
Hi

scala> class Test {
     |     p
     |
     |
You typed two blank lines.  Starting a new command.

scala>

你 可以在互動中直接觀察程式碼的執行結果,如果程式碼定義需要超過一行,只要直接按下Enter,會有個管線符號(|)表示你可以繼續撰寫程式碼,直到程式 碼定義完成(Scala會知道你何時定義完成),如果你在定義程式碼的過程中輸入錯誤了,儘管直接按兩次Enter,兩個空白行後,Scala會回到提示 字元狀態。

以下是個程式執行錯誤的畫面:
scala> val x = 10
x: Int = 10

scala> x = 11
<console>:5: error: reassignment to val
       x = 11
         ^

scala>

之後還會介紹到,在Scala中,以val宣告的變數,不可以再度指定值給它,因此在這邊會看到錯誤訊息。不過,Scala互動環境中可以重新命名一個變數:
scala> val a = 10
a: Int = 10

scala> val a = 10
a: Int = 10

scala>

在實際的程式碼中,同一作用範圍是不可以有相同的變數宣告的,而在互動環境中可以這麼作,這是為了方便你撰寫一些簡單的測試(技術上來說,指令互動環境為每個新的陳述句建立一個巢狀範圍,看來像是重複定義一個變數,其實是在不同的作用範圍)。

輸入:help可以取得基本協助訊息:
scala> :help
Welcome to Scala version 2.7.7.final (Java HotSpot(TM) Client VM, Java 1.6.0_16)
.
Type in expressions to have them evaluated.
Type :help for more information.
Type :load followed by a filename to load a Scala file.
Type :replay to reset execution and replay all previous commands.
Type :quit to exit the interpreter.

scala>

例如,你可以在純文字檔案中撰寫Scala程式碼(Scala建議的副檔名為.scala),並使用:load載入,可以指定相對路徑或絕對路徑,指定相對路徑時,檔案必須位於執行scala指令的工作路徑之下,例如,你可以撰寫:
  • Hello.scala
println("Hello!Scala!")

在指令互動環境下,可如下載入執行Hello.scala:
scala> :load Hello.scala
Loading Hello.scala...
Hello!Scala!

scala> :replay
Replaying: :load Hello.scala
Loading app.scala...
Hello!Scala!

scala>

:replay則是讓你重複執行上一次的指令互動,要離開Scala互動環境,可以輸入:quit或exit。