鍍金池/ 教程/ Scala/ Scala變量
Scala方法重載
Scala模式匹配
Scala throw關(guān)鍵字
Scala提取器
Scala概述
Scala throws關(guān)鍵字
Scala finally塊
Scala正則表達(dá)式
Scala循環(huán)語(yǔ)句
Scala多線程
Scala函數(shù)
Scala final關(guān)鍵字
Scala方法覆蓋
Scala字符串
Scala線程實(shí)現(xiàn)
Scala異常處理
Scala類和對(duì)象
Scala數(shù)據(jù)類型
Scala單例和伴生對(duì)象
Scala構(gòu)造函數(shù)
Scala教程
Scala Case類和對(duì)象
Scala繼承
Scala開發(fā)環(huán)境安裝配置
Scala運(yùn)算符
Scala文件I/O
Scala線程方法
Scala變量
Scala try-catch語(yǔ)句
Scala基礎(chǔ)語(yǔ)法
Scala集合
Scala數(shù)組
Scala閉包
Scala訪問(wèn)修辭符
Scala this關(guān)鍵字

Scala變量

變量是保存存儲(chǔ)值的內(nèi)存位置的名稱。這意味著當(dāng)創(chuàng)建變量時(shí),可以在內(nèi)存中保留一些空間。

根據(jù)變量的數(shù)據(jù)類型,編譯器分配內(nèi)存并決定可以存儲(chǔ)在預(yù)留內(nèi)存中的內(nèi)容。因此,通過(guò)為變量分配不同的數(shù)據(jù)類型,可以在這些變量中存儲(chǔ)整數(shù),小數(shù)或字符。

變量聲明

Scala具有用于聲明變量的不同語(yǔ)法。它們可以被定義為值,即常數(shù)或變量。 這里,myVar使用關(guān)鍵字var聲明。 它是一個(gè)可以改變值的變量,這稱為可變變量。 以下是使用var關(guān)鍵字定義變量的語(yǔ)法 -

語(yǔ)法

var myVar : String = "Foo"

下面示例中,myVal使用關(guān)鍵字val聲明。它是一個(gè)不能被改變的變量,這被稱為不可變變量。 以下是使用val關(guān)鍵字定義變量的語(yǔ)法 -

val myVal : String = "Foo"

可變數(shù)據(jù)類型

變量的類型在變量名稱和等號(hào)之前指定??梢酝ㄟ^(guò)其數(shù)據(jù)類型來(lái)定義任何類型的Scala變量,如下所示:

val or val VariableName : DataType = [Initial Value]

如果您沒(méi)有為變量分配任何初始值,則有效的語(yǔ)法如下:

var myVar :Int;
val myVal :String;

可變類型推斷

當(dāng)為變量分配初始值時(shí),Scala編譯器可以根據(jù)分配給它的值來(lái)推斷變量的類型。這被稱為變量類型推斷。 因此,可以編寫這樣的變量聲明 -

var myVar = 10;
val myVal = "Hello, Scala!";

默認(rèn)情況下,myVar將會(huì)被計(jì)算推斷為Int類型,myVal將計(jì)算推斷為String類型變量。

多個(gè)賦值

Scala支持多個(gè)賦值。如果代碼塊或方法返回一個(gè)元組(Tuple - 保持不同類型的對(duì)象的集合),則可以將元組分配給一個(gè)val變量。

注:我們將在隨后的章節(jié)學(xué)習(xí)元組。

val (myVar1: Int, myVar2: String) = Pair(40, "Foo")

類型推斷得到正確的類型 -

val (myVar1, myVar2) = Pair(40, "Foo")

示例程序

以下是一個(gè)示例程序,用于說(shuō)明Scala中變量聲明的過(guò)程。該程序聲明了四個(gè)變量 - 兩個(gè)變量用變量聲明定義,其余兩個(gè)變量沒(méi)有變量聲明。

例子

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中,使用以下命令用于編譯和執(zhí)行此程序。

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中的變量可以有三個(gè)不同的范圍,具體取決于它們被使用的位置。它們可以作為字段存在,作為方法參數(shù)和局部變量存在。以下是每種類型范圍的詳細(xì)信息。

字段

字段是屬于對(duì)象的變量。這些字段可以從對(duì)象中的每個(gè)方法的內(nèi)部訪問(wèn)。根據(jù)字段聲明的訪問(wèn)修飾符,也可以在對(duì)象外部訪問(wèn)字段。 對(duì)象字段可以是可變的和不可變的類型,可以使用varval來(lái)定義。

方法參數(shù)

方法參數(shù)是在調(diào)用該方法時(shí)用于傳遞方法中的值的變量。方法參數(shù)只能從方法內(nèi)部訪問(wèn),但是如果從方法外部引用了對(duì)象,則可以從外部訪問(wèn)傳入的對(duì)象。方法參數(shù)始終是不可變的,由val關(guān)鍵字定義。

局部變量

局部變量是在方法中聲明的變量。局部變量只能從方法內(nèi)部訪問(wèn),但如果從方法返回,則您創(chuàng)建的對(duì)象可能會(huì)轉(zhuǎn)義該方法。局部變量可以是可變的和不可變的類型,可以使用varval定義。