- Lua 教程
- Lua - 首頁
- Lua 基礎
- Lua - 概述
- Lua - 環境
- Lua - 基本語法
- Lua - 註釋
- Lua - 列印 Hello World
- Lua - 變數
- Lua - 資料型別
- Lua - 運算子
- Lua - 迴圈
- Lua - 決策
- Lua - 函式
- Lua - 日期和時間
- Lua 陣列
- Lua - 陣列
- Lua - 多維陣列
- Lua - 陣列長度
- Lua - 迭代陣列
- Lua 迭代器
- Lua - 迭代器
- Lua 列表
- Lua - 在列表中搜索
- Lua 模組
- Lua - 模組
- Lua - 名稱空間
- Lua 元表
- Lua - 元表
- Lua 協程
- Lua - 協程
- Lua 檔案處理
- Lua - 檔案I/O
- Lua 庫
- Lua - 標準庫
- Lua - 數學庫
- Lua - 作業系統功能
- Lua 有用資源
- Lua - 快速指南
- Lua - 有用資源
- Lua - 討論
Lua - 變數
變數只不過是我們程式可以操作的儲存區域的名稱。它可以儲存不同型別的值,包括函式和表。
變數名可以由字母、數字和下劃線組成。它必須以字母或下劃線開頭。由於 Lua 區分大小寫,因此大寫字母和小寫字母是不同的。Lua 中有八種基本型別的值:
在 Lua 中,雖然我們沒有變數資料型別,但根據變數的作用域,我們有三種類型。
全域性變數 - 除非明確宣告為區域性變數,否則所有變數都被視為全域性變數。
區域性變數 - 當變數的型別指定為區域性變數時,其作用域僅限於其作用域內的函式。
表字段 - 這是一種特殊的變數型別,可以儲存任何東西,除了 nil,包括函式。
Lua 中的變數定義
變數定義意味著告訴直譯器在哪裡以及如何建立變數的儲存空間。變數定義可以選擇型別,幷包含一個或多個該型別的變數列表,如下所示:
type variable_list;
這裡,type 可選擇為區域性變數或指定型別使其成為全域性變數,而 variable_list 可以包含一個或多個用逗號分隔的識別符號名稱。這裡顯示了一些有效的宣告:
local i, j local i local a,c
語句 local i, j 同時宣告和定義了變數 i 和 j;它指示直譯器建立名為 i、j 的變數,並將作用域限制為區域性變數。
變數可以在宣告中進行初始化(賦值初始值)。初始化器由等號後跟一個常量表達式組成,如下所示:
type variable_list = value_list;
一些例子:
local d , f = 5 ,10 --declaration of d and f as local variables.
d , f = 5, 10; --declaration of d and f as global variables.
d, f = 10 --[[declaration of d and f as global variables.
Here value of f is nil --]]
對於沒有初始化器的定義:具有靜態儲存持續時間的變數將隱式初始化為 nil。
Lua 中的變數宣告
正如你在上面的例子中看到的,多個變數的賦值遵循 variable_list 和 value_list 格式。在上面的例子 local d, f = 5,10 中,我們有 d 和 f 在 variable_list 中,5 和 10 在 values list 中。
Lua 中的值賦值是這樣的:variable_list 中的第一個變數與 value_list 中的第一個值對應,以此類推。因此,d 的值為 5,f 的值為 10。
示例 - 宣告和使用變數
嘗試以下示例,其中變數已在頂部宣告,但在主函式內定義和初始化:
-- Variable definition:
local a, b
-- Initialization
a = 10
b = 30
print("value of a:", a)
print("value of b:", b)
-- Swapping of variables
b, a = a, b
print("value of a:", a)
print("value of b:", b)
f = 70.0/3.0
print("value of f", f)
當編譯並執行上述程式碼時,會產生以下結果:
value of a: 10 value of b: 30 value of a: 30 value of b: 10 value of f 23.333333333333
Lua 中的左值和右值
Lua 中有兩種表示式:
左值 (lvalue) - 指向記憶體位置的表示式稱為“左值”表示式。左值可以出現在賦值的左側或右側。
右值 (rvalue) - 右值指的是儲存在記憶體某個地址的資料值。右值是一個不能賦值的表示式,這意味著右值可以出現在右側,但不能出現在賦值的左側。
變數是左值,因此可以出現在賦值的左側。數值文字是右值,因此不能賦值,也不能出現在左側。以下是一個有效的語句:
g = 20
但以下語句無效,會生成構建時錯誤:
10 = 20
在 Lua 程式語言中,除了上述型別的賦值外,還可以在同一個語句中包含多個左值和右值。如下所示。
g,l = 20,30
在上述語句中,20 賦值給 g,30 賦值給 l。
示例 - 宣告和初始化變數
嘗試以下示例,其中變數已在頂部宣告,但在主函式內定義和初始化:
-- Variable definition:
a, b = 10, 30
print("value of a:", a)
print("value of b:", b)
當編譯並執行上述程式碼時,會產生以下結果:
value of a: 10 value of b: 30