Scala 語句


#

如果有很好的了解Java語言,那麼將會很容易學習Scala。 Scala和Java間的最大語法的差別在於;行結束符是可選的。考慮Scala程式它可以被定義為透過呼叫彼此方法進行通訊的物件的集合。現在,簡要地看看什麼叫做類,對象,方法和臨時變數。

  •                     對象 - 對像有狀態和行為。例如:狗有狀態 - 顏色,名字,品種,它有行為 - 搖擺,吠叫,吃東西。物件是類別的一個實例。

  •                     類別 - 類別可以被定義為一個範本/藍本以描述行為/指示其類型支援物件。

  •                     方法 - 方法本質上是一個行為。類別可以包含許多方法。它是在將邏輯寫入方法中,資料進行操作和所有動作被執行。

  •                     字段 - 每個物件都有其獨特的一組臨時變量,這是所謂的字段。物件的狀態是由指派給這些欄位中的值所建立的。

            第一個Scala程式:

            互動模式程式設計:

            呼叫解釋不透過一個腳本檔案作為一個參數會顯示以下提示:

C:>scalaWelcome to Scala version 2.9.0.1Type 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 HelloWorldHello, 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中的保留字。這些保留關鍵字不可以被用作常數或變量,或任何其他的識別碼名稱。

                        =                        <%
                        抽象的######                        案件######                        抓住######                        班級###########                        定義                        做######                        別的######                        擴充                        錯誤的######                        最終的######                        最後######                        為了######
                        對於一些######                        如果######                        隱式#                        進口###########                        懶惰的######                        匹配######                        新的######                        無效的###########                        目的######                        覆蓋                        包裹######                        私人的######
                        受保護                        返回######                        密封######                        極好的##########                        這######                        丟######                        特徵######                        試##########                        真的######                        類型######                        值                        var
                        儘管######                        和######                        屈服######                                                 -                        :
                        =>                        <-                        <:
                        >:
                        #                        @                                                  

            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}

#