程式扎記: [Scala 小學堂] Scala Gossic : 起步走 - 基本環境與指令 (scala 指令)

標籤

2016年4月6日 星期三

[Scala 小學堂] Scala Gossic : 起步走 - 基本環境與指令 (scala 指令)

轉載自 這裡 
前言 : 
Scala 是一個可直譯、可編譯、靜態、可運行於 JVM 之上、可與 Java 互操作、融合物件導向編程特性與函式編程風格的程式語言. 從一些簡單的語法開始,了解 Scala 的許多特性,所以就算是起步走,東西也夠多了. 簡單的小程式可以使用 scala 指令,編譯的事就交給 scalac,編譯想快點就用 fsc. (Scala 官網

scala 指令 : 
直接執行 scala 指令,會進入 指令互動環境,你可以輸入 -version 得知Scala的版本資訊 : 
# scala -version
Scala code runner version 2.9.2 -- Copyright 2002-2011, LAMP/EPFL


你可以使用 -e 引數(e 是指execute),將一段指令稿送給 scala 直譯並執行,這適合在懶得進入 指令互動環境,又想了解一小段程式碼的作用或結果時 : 
> scala -e "println(\"Hello!World!\")"
Hello!World!

> scala -e "val r = 1 + 2; println(r)"
3


實際上,你可以撰寫一個純文字檔案,建議副檔名為 .scala,在當中撰寫 Scala 程式碼 : 
- Hello.scala 代碼 :
  1. println("Hello!Scala!")  

接著如下執行指令載入指令稿直譯並執行 : 
# scala Hello.scala
Hello!Scala!


如果你想取得命令列引數(Command line arguments),則可以使用 args,例如 : 
- Hello1.scala 代碼 :
  1. println("Hello!" + args(0) + "!")  

命令列引數會以字串陣列方式收集並指定給args,注意!args 後是 () 而不是 [],Scala中陣列索引的指定方式是(),0表示為第一個命令列引數,1則表示第二個命令列引數,依此類推。接著如下執行指令載入指令稿直譯並執行 : 
# scala Hello.scala John
Hello!John!


Scala 的程式運行於JVM之上,實際上,scala 指令會在記憶體中將你的指令稿編譯為位元碼(byte code),而後啟動 JVM 並執行它(實際上,scala 將你的指令稿包裹進一個Main類別的main方法中)。若你願意,可以在執行scala直譯時下 -savecompiled 引數,將編譯完成的位元碼儲存下來,例如 : 
# scala -savecompiled Hello.scala Peter
Hello!Peter!
# ls *.jar
Hello.jar


程式如常執行之後,你會發現同一目錄下有個 JAR 檔案,當中包含了 scala 所編譯出來的位元碼檔案。由於 scala 的程式是運行於 JVM 之上,你會想要指定一些引數給 JVM,同樣是在執行 scala 時,使用 -Dproperty=value 的格式來指定, 並且你可以使用 -help 取得更多協助訊息 : 



scala 指令可以用來直譯指令稿,也可以用來執行編譯過後的程式碼(也就是位元碼,必須先存在.class檔案),-howtorun 可以指定如何執行程式碼,預設是由 scala 自行猜測。-howtorun 指定為 script 時,直接告知 scala 指令以直譯方式執 行,可以稍微加快 scala 開始進行直譯。-howtorun 指定 object 時,程式必須使用 scalac 編譯為.class. 

補充說明 :

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!