變數是程式可以操作的存儲區域的名稱。 它可以包含不同類型的值,包括函數和表。
變數的名稱可以由字母,數字和下劃線字元組成。 它必須以字母或下劃線開頭。 大寫和小寫字母是不同的,因為Lua區分大小寫。Lua中有八種基本類型的值。
在Lua中,雖然沒有可變數據類型,但根據變數的範圍有三種類型。
- 全局變數 - 所有變數都被視為全局變數,除非明確聲明為局部變數。
- 局部變數 - 當為變數指定類型為
local
時,其範圍受函數範圍限制。 - 表字段 - 這是一種特殊類型的變數,可以保存除
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
在variable_list
中就是d
和f
,在value_list
中就是5
和10
。
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中有兩種表達方式 -
- 左值 - 引用記憶體位置的運算式稱為“左值”運算式。 左值可以顯示為賦值的左側或右側。
- 右值 - 術語右值是指存儲在內存中某個地址的數據值。 右值是一個不能賦值的運算式,所以右值可能出現在右側,但不會出現在賦值的左側。
變數是左值,因此可能出現在賦值的左側。 數字文字是右值,因此可能無法分配,也不能出現在左側。 以下是有效的聲明 -
g = 20
但是以下不是有效的語句,會產生構建時錯誤 -
10 = 20
在Lua編程語言中,除了上述類型的賦值之外,在同一個語句中可以有多個左值和右值。 如下所示。
g,l = 20,30
在上面的語句中,20
分配給變數g
,30
分配給變數l
。