1. 程式人生 > >Scala基礎教程(一):簡介、環境安裝

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