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 } }
讓我們來看看如何保存文件,編譯並運行該程序。請按照以下的步驟:
-
打開記事本,並添加上麵代碼。
-
將文件保存為:HelloWorld.scala。
-
打開命令提示符窗口,然後轉到保存程序文件的目錄。假設它是 C:>
-
鍵入“scalac HelloWorld.scala”,然後按回車編譯代碼。如果代碼中冇有錯誤,命令提示符下將自動換到下一行。
-
上麵的命令將在當前目錄中生成幾個類文件。其中一個名稱為HelloWorld.class。這是一個字節碼可以運行在Java虛擬機(JVM)。
-
現在,鍵入“scala HelloWorld”來運行程序。
-
可以看到“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}