[譯]Scala快速開始

學習Scala最好的方法取決于你已經會的東西以及你想學習的方式。有很多可供選擇的資源,比如書籍,教程,培訓課程,演示報告以及使用Scala編譯器練習。很多人會找到一種組合方式,一方面準備一本Scala的書籍并且立即開始使用Scala編譯器嘗試示例。另一方面,你可能想要從Scala培訓課程或者使用在線提供的資料開始。
隨著你的Scala知識不斷增長,你會發現有很多高階資料和一個非常友好的Scala社區可以幫助你。他們都對Scala富有激情并且熱烈歡迎新成員。很多人都為新接觸Scala的程序員寫了幫助資料,他們會在Scala論壇或個人博客中回復尋求幫助的郵件或者分享新技術、高階概念或工具。

為編程初學者準備的Scala

如果你剛開始學習編程,你會發現大部分關于Scala的資料都假定你已經有一定的編程經驗了。有兩個很有價值的資源推薦給編程初學者,它們會帶領你進入Scala的世界:

  • 在線課堂Functional Programming Principles in Scala,由Coursera提供。由Scala的創造者Martin Odersky授課,這個網絡課堂采用一些學術方法教授函數式編程的基本原理。你會通過解決編程任務學到很多Scala知識。
  • Kojo是一個使用Scala編程來探索和玩數學,藝術,音樂,動畫和游戲的交互式學習環境。

你的第一行代碼

"Hello World!"程序

作為第一個示例,我們使用標準的"Hello World!"程序來說明在對很多語言知識不了解的情況下如何使用Scala工具。

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello, world!")
  }
}

對Java程序員來說,這個程序的結構應該很熟悉,它包含了main函數,可以打印"Hello World!"到標準輸出。
我們假設Scala軟件和用戶環境都已經正確設置好。例如:

環境 變量 值(示例)
Unix $SCALA_HOME /usr/local/share/scala
$PATH \$PATH:\$SCALA_HOME/bin
Windows %SCALA_HOME% c:\Progra~1\Scala
%PATH% %PATH%;%SCALA_HOME%\bin

交互式運行

Scala命令會啟動一個交互式shell,在這里Scala表達式可以被交互式地解釋執行。

> scala
This is a Scala shell.
Type in expressions to have them evaluated.
Type :help for more information.
scala> object HelloWorld {
    |   def main(args: Array[String]): Unit = {
    |     println("Hello, world!")
    |   }
    | }
defined module HelloWorld
scala> HelloWorld.main(Array())
Hello, world!
scala>:q
>

:q縮寫代表內部shell命令:quit,用于退出解釋器。

編譯

scalac命令會編譯一個(或多個)Scala源文件并且生成可以在任何標準JVM上執行的Java字節碼。Scala編譯器和javacJava SDK的編譯器)的工作方式類似。

> scalac HelloWorld.scala

默認地,scalac生成class文件到當前的工作路徑中??梢允褂?code>-d選項來指定一個不同的輸出路徑。

> scalac -d classes HelloWorld.scala

執行

scala會使用合適的選項來執行生成的字節碼:

>scala HelloWorld

scala允許我們指定命令選項,如-classpath(也可寫為-cp)選項:

>scala -cp classes HelloWorld

scala命令的參數必須是一個頂層對象。如果對象擴展了scala.App特征,那么所有包含在這個對象中的語句都會被執行,否則你必須添加一個main函數作為程序入口。
下面是使用App特征的"Hello, world!"程序:

object HelloWorld extends App {
  println("Hello, world!")
}

腳本

我們可能也想讓示例作為shell腳本或者批處理命令運行。
bash shell腳本script.sh包含下面的Scala代碼:

#!/usr/bin/env scala
object HelloWorld extends App {
  println("Hello, world!")
}
HelloWorld.main(args)

可以直接使用shell命令執行:

> ./script.sh

注意:我們假設這里的script.sh文件有執行權限并且scala命令的搜索路徑已經配置在PATH環境變量中了。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容