Scala基礎教程(一):簡介、環境安裝
Scala基礎語法
如果有很好的瞭解Java語言,那麼將很容易學習Scala。 Scala和Java間的最大語法的區別在於;行結束符是可選的。考慮Scala程式它可以被定義為通過呼叫彼此方法進行通訊的物件的集合。現在,簡要地看看什麼叫做類,物件,方法和臨時變數。
· 物件 - 物件有狀態和行為。例如:狗有狀態 - 顏色,名字,品種,它有行為 - 搖擺,吠叫,吃東西。物件是類的一個例項。
· 類 - 類可以被定義為一個模板/藍本以描述行為/指示其型別支援物件。
· 方法 - 方法本質上是一個行為。類可以包含許多方法。它是在將邏輯寫入方法中,資料進行操作和所有動作被執行。
· 欄位 - 每個物件都有其獨特的一組臨時變數,這是所謂的欄位。物件的狀態是由分配給這些欄位中的值建立的。
第一個Scala程式:
互動式模式程式設計:
呼叫解釋不通過一個指令碼檔案作為一個引數會顯示以下提示:
C:>scala
Welcome to Scala version 2.9.0.1
Type in expressions to have them evaluated.
Type :help for more information.
scala>
鍵入下列文字的Scala提示符,然後按Enter鍵:
scala> println("Hello, Scala!");
這將產生以下結果:
Hello, Scala!
指令碼模式程式設計:
讓我們來看一個簡單的程式碼,用於列印簡單的一句話:Hello, World!
object HelloWorld {
/* This is my first java program.
* This will print 'Hello World' as the output
*/
def main(args: Array[String]) {
println("Hello, world!") // prints Hello World
}
}
讓我們來看看如何儲存檔案,編譯並執行該程式。請按照以下的步驟:
1. 開啟記事本,並新增上面程式碼。
2. 將檔案儲存為:HelloWorld.scala。
3. 開啟命令提示符視窗,然後轉到儲存程式檔案的目錄。假設它是 C:>
4. 鍵入“scalac HelloWorld.scala”,然後按回車編譯程式碼。如果程式碼中沒有錯誤,命令提示符下將自動換到下一行。
5. 上面的命令將在當前目錄中生成幾個類檔案。其中一個名稱為HelloWorld.class。這是一個位元組碼可以執行在Java虛擬機器(JVM)。
6. 現在,鍵入“scala HelloWorld”來執行程式。
7. 可以看到“Hello, World!”列印在視窗上。
C:> scalac HelloWorld.scala
C:> scala HelloWorld
Hello, World!
基礎語法
關於Scala程式,這是非常要注意以下幾點。
· 區分大小寫 - Scala是大小寫敏感的,這意味著標識Hello 和 hello在Scala中會有不同的含義。
· 類名 - 對於所有的類名的第一個字母要大寫。
如果需要使用幾個單詞來構成一個類的名稱,每個單詞的第一個字母要大寫。
示例:classMyFirstScalaClass
· 方法名稱 - 所有的方法名稱的第一個字母用小寫。
如果若干單詞被用於構成方法的名稱,則每個單詞的第一個字母應大寫。
示例:defmyMethodName()
· 程式檔名 - 程式檔案的名稱應該與物件名稱完全匹配。
儲存檔案時,應該儲存它使用的物件名稱(記住Scala是區分大小寫),並追加“.scala”為副檔名。 (如果檔名和物件名稱不匹配,程式將無法編譯)。
示例: 假設“HelloWorld”是物件的名稱。那麼該檔案應儲存為'HelloWorld.scala“
· def main(args: Array[String]) - Scala程式從main()方法開始處理,這是每一個Scala程式的強制程式入口部分。
Scala修飾符:
所有的Scala的元件需要名稱。使用物件,類,變數和方法名被稱為識別符號。關鍵字不能用作識別符號和標識是區分大小寫的。Scala支援以下四種類型識別符號:
文字識別符號
字母數字識別符號開始以字母或下劃線,可以使用字母,數字或下劃線。“$”字元在Scala中是保留關鍵字,識別符號不能使用。以下是合法的字母識別符號:
age, salary, _value, __1_value
以下是非法識別符號:
$salary, 123abc, -salary
運算子標識
運算子識別符由一個或多個運算子字元。操作字元是可列印的ASCII字元,如+, :, ?, ~ 或#。以下是合法的運算子標識:
+ ++ ::: <?> :>
Scala編譯器將在內部“軋”操作符識別符號使它們成為合法的Java識別符號,並嵌入$字元。例如,所述識別符號:->將內部表示為$colon$minus$greater。
混合識別符號
混合識別符號由一個字母數字識別符,隨後是一個下劃線和運算子標識。以下是合法的混合識別符號:
unary_+, myvar_=
在這裡,作為一個方法名unary_+定義了一個一元+運算子和myvar_=用來作為方法名稱定義了一個賦值運算子。
立即數識別符號
一個文字標識是包含在反引號(` . . . `)的任意字串。以下是合法的文字標識:
`x` `<clinit>` `yield`
Scala關鍵字:
下面的列表顯示在Scala中的保留字。這些保留關鍵字不可以被用作常量或變數,或任何其他的識別符號名稱。
abstract |
case |
catch |
class |
def |
do |
else |
extends |
false |
final |
finally |
for |
forSome |
if |
implicit |
import |
lazy |
match |
new |
null |
object |
override |
package |
private |
protected |
return |
sealed |
super |
this |
throw |
trait |
try |
true |
type |
val |
var |
while |
with |
yield |
|
- |
: |
= |
=> |
<- |
<: |
<% |
>: |
# |
@ |
Scala中的註釋
Scala支援單行和多行註釋非常類似於Java。多行註釋可以巢狀,但必須正確巢狀。可用的任何註釋和所有字元都將被Scala編譯器忽略。
object HelloWorld {
/* This is my first java program.
* This will print 'Hello World' as the output
* This is an example of multi-line comments.
*/
def main(args: Array[String]) {
// Prints Hello World
// This is also an example of single line comment.
println("Hello, world!")
}
}
空行和空格:
僅包含空格,可能帶有註釋行,被稱為一個空行,並且Scala將會完全忽略它。標記可以通過空格和/或註釋分開。
換行符:
Scala是面向行的語言,語句可以用分號(;)結束或換行符。分號在宣告的結尾通常是可選的。可以鍵入一個想要的,如果語句出現其本身在一行。在另一方面,如果寫在一行多個語句分號是必需的:
val s = "hello"; println(s)
Scala包:
包是一個程式碼命名的模組。例如,Lift 實用包net.liftweb.util。包宣告是在原始檔中的第一個非註釋行,如下所示:
package com.liftcode.stuff
Scala的包可以被匯入,使他們能夠在當前編譯範圍內被引用。下面的語句是匯入scala.xml包的內容:
import scala.xml._
可以匯入封裝的類和物件,例如,從scala.collection.mutable匯入HashMap:
import scala.collection.mutable.HashMap
可以從一個單一封裝的scala.collection.immutable包匯入多個類或物件,例如,TreeMap和TreeSet:
import scala.collection.immutable.{TreeMap, TreeSet}
Scala語言可以安裝在任何類UNIX或Windows系統。要安裝Scala,必須先安裝Java1.5或更高版本安裝在計算機上。
Windows上安裝Scala:
步驟(1):JAVA設定:
首先,必須設定JAVA_HOME環境變數和將JDK的bin目錄新增到PATH變數。要驗證是否可以工作,在命令提示符下,鍵入:java -version,然後按Enter。應該看到類似以下內容:
C:>java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02, mixed mode)
C:>
接下來測試,看看已安裝Java編譯器。輸入javac -version。應該看到類似以下內容:
C:>javac -version
javac 1.6.0_15
C:>
步驟(2):SCALA設定:
接下來可以下載Scala從以下網址http://www.scala-lang.org/downloads. 在寫這篇教程的時候,下載的是scala-2.9.0.1-installer.jar,並把它放在 C:/> 目錄。請確保有管理員許可權進行。現在在命令提示符下鍵入以下命令執行:
C:>java -jar scala-2.9.0.1-installer.jar
C:>
上面的命令將顯示一個安裝嚮導,該向導將引導在Windows計算機上安裝。在安裝過程中,它會詢問許可協議,接受它,並進一步詢問Scala將要安裝的 路徑。選擇的預設給出的路徑 C:ProgramFilesscala,可以選擇一個合適的路徑。最後開啟一個新的命令提示符,然後鍵入scala -version,然後按Enter鍵。應該會看到以下內容:
C:>scala -version
Scala code runner version 2.9.0.1 -- Copyright 2002-2011, LAMP/EPFL
C:>
恭喜已經成在Windows機器上安裝Scala。下一節將演示如何在Mac OS X和Unix / Linux機器上安裝Scala。
在Mac OS X和Linux上安裝Scala
步驟(1):JAVA設定:
請確保擁有Java JDK1.5或更高版本已經計算機上安裝並設定JAVA_HOME環境變數,以及JDK的bin目錄新增到PATH變數。要驗證是否安裝正確,在命令提示符下,鍵入java -version,然後按Enter。應該看到類似以下內容:
$java -version
java version "1.5.0_22"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot(TM) Server VM (build 1.5.0_22-b03, mixed mode)
$
接下來,測試,看看已安裝的Java編譯器。輸入javac-version。應該看到類似以下內容:
$javac -version
javac 1.5.0_22
javac: no source files
Usage: javac <options> <source files>
................................................
$
步驟(2):SCALA設定:
接下來可以下載Scala 從以下網址 http://www.scala-lang.org/downloads. 在寫這篇教程的時候,下載的是Scala-2.9.0.1-installer.jar,並把它放在/tmp目錄。請確保擁有管理員許可權才能進行操作。現在,在命令提示符下鍵入以下命令執行:
$java -jar scala-2.9.0.1-installer.jar
Welcome to the installation of scala 2.9.0.1!
The homepage is at: http://scala-lang.org/
press 1 to continue, 2 to quit, 3 to redisplay
1
................................................
[ Starting to unpack ]
[ Processing package: Software Package Installation (1/1) ]
[ Unpacking finished ]
[ Console installation done ]
$
在安裝過程中,它會詢問許可協議,接受它鍵入1,它會問在哪裡Scala安裝。這裡是在目錄/usr/local/share,可以選擇一個合適的路徑。最後,開啟一個新的命令提示符,然後鍵入Scala的-version,然後按Enter鍵。應該看到以下內容:
$scala -version
Scala code runner version 2.9.0.1 -- Copyright 2002-2011, LAMP/EPFL
$
恭喜,已經在UNIX/Linux機器上安裝了Scala。
如果有很好的瞭解Java語言,那麼將很容易學習Scala。 Scala和Java間的最大語法的區別在於;行結束符是可選的。考慮Scala程式它可以被定義為通過呼叫彼此方法進行通訊的物件的集合。現在,簡要地看看什麼叫做類,物件,方法和臨時變數。
· 物件 - 物件有狀態和行為。例如:狗有狀態 - 顏色,名字,品種,它有行為 - 搖擺,吠叫,吃東西。物件是類的一個例項。
· 類 - 類可以被定義為一個模板/藍本以描述行為/指示其型別支援物件。
· 方法 - 方法本質上是一個行為。類可以包含許多方法。它是在將邏輯寫入方法中,資料進行操作和所有動作被執行。
· 欄位 - 每個物件都有其獨特的一組臨時變數,這是所謂的欄位。物件的狀態是由分配給這些欄位中的值建立的。
第一個Scala程式:
互動式模式程式設計:
呼叫解釋不通過一個指令碼檔案作為一個引數會顯示以下提示:
C:>scala
Welcome to Scala version 2.9.0.1
Type in expressions to have them evaluated.
Type :help for more information.
scala>
鍵入下列文字的Scala提示符,然後按Enter鍵:
scala> println("Hello, Scala!");
這將產生以下結果:
Hello, Scala!
指令碼模式程式設計:
讓我們來看一個簡單的程式碼,用於列印簡單的一句話:Hello, World!
object HelloWorld {
/* This is my first java program.
* This will print 'Hello World' as the output
*/
def main(args: Array[String]) {
println("Hello, world!") // prints Hello World
}
}
讓我們來看看如何儲存檔案,編譯並執行該程式。請按照以下的步驟:
1. 開啟記事本,並新增上面程式碼。
2. 將檔案儲存為:HelloWorld.scala。
3. 開啟命令提示符視窗,然後轉到儲存程式檔案的目錄。假設它是 C:>
4. 鍵入“scalac HelloWorld.scala”,然後按回車編譯程式碼。如果程式碼中沒有錯誤,命令提示符下將自動換到下一行。
5. 上面的命令將在當前目錄中生成幾個類檔案。其中一個名稱為HelloWorld.class。這是一個位元組碼可以執行在Java虛擬機器(JVM)。
6. 現在,鍵入“scala HelloWorld”來執行程式。
7. 可以看到“Hello, World!”列印在視窗上。
C:> scalac HelloWorld.scala
C:> scala HelloWorld
Hello, World! from: http://www.yiibai.com/scala/scala_basic_syntax.html