Scala變量
變量是保存存儲值的內存位置的名稱。這意味着當創建變量時,可以在內存中保留一些空間。
根據變量的數據類型,編譯器分配內存並決定可以存儲在預留內存中的內容。因此,通過爲變量分配不同的數據類型,可以在這些變量中存儲整數,小數或字符。
變量聲明
Scala具有用於聲明變量的不同語法。它們可以被定義爲值,即常數或變量。 這裏,myVar
使用關鍵字var
聲明。 它是一個可以改變值的變量,這稱爲可變變量。 以下是使用var
關鍵字定義變量的語法 -
語法
var myVar : String = "Foo"
下面示例中,myVal
使用關鍵字val
聲明。它是一個不能被改變的變量,這被稱爲不可變變量。 以下是使用val
關鍵字定義變量的語法 -
val myVal : String = "Foo"
可變數據類型
變量的類型在變量名稱和等號之前指定。可以通過其數據類型來定義任何類型的Scala變量,如下所示:
val or val VariableName : DataType = [Initial Value]
如果您沒有爲變量分配任何初始值,則有效的語法如下:
var myVar :Int;
val myVal :String;
可變類型推斷
當爲變量分配初始值時,Scala編譯器可以根據分配給它的值來推斷變量的類型。這被稱爲變量類型推斷。 因此,可以編寫這樣的變量聲明 -
var myVar = 10;
val myVal = "Hello, Scala!";
默認情況下,myVar
將會被計算推斷爲Int
類型,myVal
將計算推斷爲String
類型變量。
多個賦值
Scala支持多個賦值。如果代碼塊或方法返回一個元組(Tuple - 保持不同類型的對象的集合),則可以將元組分配給一個val
變量。
注:我們將在隨後的章節學習元組。
val (myVar1: Int, myVar2: String) = Pair(40, "Foo")
類型推斷得到正確的類型 -
val (myVar1, myVar2) = Pair(40, "Foo")
示例程序
以下是一個示例程序,用於說明Scala中變量聲明的過程。該程序聲明瞭四個變量 - 兩個變量用變量聲明定義,其餘兩個變量沒有變量聲明。
例子
object Demo {
def main(args: Array[String]) {
var myVar :Int = 10;
val myVal :String = "Hello Scala with datatype declaration.";
var myVar1 = 20;
val myVal1 = "Hello Scala new without datatype declaration.";
println(myVar); println(myVal); println(myVar1);
println(myVal1);
}
}
將上述程序保存在源文件:Demo.scala中,使用以下命令用於編譯和執行此程序。
D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
10
Hello Scala with datatype declaration.
20
Hello Scala new without datatype declaration.
D:\software\scala-2.12.3\bin>
變量的作用域
Scala中的變量可以有三個不同的範圍,具體取決於它們被使用的位置。它們可以作爲字段存在,作爲方法參數和局部變量存在。以下是每種類型範圍的詳細信息。
字段
字段是屬於對象的變量。這些字段可以從對象中的每個方法的內部訪問。根據字段聲明的訪問修飾符,也可以在對象外部訪問字段。 對象字段可以是可變的和不可變的類型,可以使用var
或val
來定義。
方法參數
方法參數是在調用該方法時用於傳遞方法中的值的變量。方法參數只能從方法內部訪問,但是如果從方法外部引用了對象,則可以從外部訪問傳入的對象。方法參數始終是不可變的,由val
關鍵字定義。
局部變量
局部變量是在方法中聲明的變量。局部變量只能從方法內部訪問,但如果從方法返回,則您創建的對象可能會轉義該方法。局部變量可以是可變的和不可變的類型,可以使用var
或val
定義。