
- Scala 教程
- Scala - 首頁
- Scala - 概述
- Scala - 特性
- Scala - 環境搭建
- Scala - 構建工具 (SBT)
- Scala - 基本語法
- 資料型別和變數
- Scala - 資料型別
- Scala - 變數
- Scala - 字串
- Scala - 陣列
- Scala 運算子
- Scala - 運算子
- Scala - 算術運算子
- Scala - 關係運算符
- Scala - 邏輯運算子
- Scala - 位運算子
- Scala - 賦值運算子
- Scala 條件語句
- Scala - IF ELSE
- Scala 迴圈語句
- Scala - 迴圈語句
- Scala - while 迴圈
- Scala - do-while 迴圈
- Scala - for 迴圈
- Scala - break 語句
- Scala 類與物件
- Scala - 類與物件
- Scala - 訪問修飾符
- Scala 方法與函式
- Scala - 函式
- Scala - 按名稱呼叫的函式
- Scala - 帶命名引數的函式
- Scala - 帶變長引數的函式
- Scala - 遞迴函式
- Scala - 預設引數值
- Scala - 高階函式
- Scala - 巢狀函式
- Scala - 匿名函式
- 部分應用函式
- Scala - Currying 函式
- Scala 集合
- Scala - 集合
- Scala - 列表
- Scala - 集合
- Scala - 對映
- Scala - 元組
- Scala - 迭代器
- Scala - Option
- Scala 模式匹配
- Scala - 模式匹配
- Scala - 異常處理
- Scala - 提取器
- Scala - 正則表示式
- Scala 檔案 I/O
- Scala - 檔案 I/O
- Scala 高階概念
- Scala - 閉包
- Scala - 特質
- Scala 有用資源
- Scala - 快速指南
- Scala - 線上編譯器
- Scala - 有用資源
- Scala - 討論
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 支援多重賦值。如果程式碼塊或方法返回一個元組(**元組** - 包含不同型別物件的集合),則該元組可以賦值給 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**。以下命令用於編譯和執行此程式。
命令
\>scalac Demo.scala \>scala Demo
輸出
10 Hello Scala with datatype declaration. 20 Hello Scala without datatype declaration.
變數作用域
Scala 中的變數可以根據其使用位置具有三種不同的作用域。它們可以作為欄位、方法引數和區域性變數存在。以下是每種作用域的詳細資訊。
欄位
欄位是屬於物件的變數。欄位可以從物件的每個方法內部訪問。欄位也可以根據宣告欄位的訪問修飾符從物件外部訪問。物件欄位可以是可變型別和不可變型別,並且可以使用**var**或**val**定義。
方法引數
方法引數是變數,用於在呼叫方法時將值傳遞到方法中。方法引數只能從方法內部訪問,但是如果您從方法外部引用物件,則傳遞的物件可能可以從外部訪問。方法引數始終是不可變的,由**val**關鍵字定義。
區域性變數
區域性變數是在方法內部宣告的變數。區域性變數只能從方法內部訪問,但是如果您從方法中返回它們,則建立的物件可能會逃離方法。區域性變數可以是可變型別和不可變型別,並且可以使用**var**或**val**定義。