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