位置:首頁 > 高級語言 > 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中會有不同的含義。

  • 類名 - 對於所有的類名的第一個字母要大寫。

    如果需要使用幾個單詞來構成一個類的名稱,每個單詞的第一個字母要大寫。

    示例:class MyFirstScalaClass

  • 方法名稱 - 所有的方法名稱的第一個字母用小寫。

    如果若乾單詞被用於構成方法的名稱,則每個單詞的第一個字母應大寫。

    示例:def myMethodName()

  • 程序文件名 - 程序文件的名稱應該與對象名稱完全匹配。

    保存文件時,應該保存它使用的對象名稱(記住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}