Lua變數

變數是程式可以操作的存儲區域的名稱。 它可以包含不同類型的值,包括函數和表。

變數的名稱可以由字母,數字和下劃線字元組成。 它必須以字母或下劃線開頭。 大寫和小寫字母是不同的,因為Lua區分大小寫。Lua中有八種基本類型的值。

在Lua中,雖然沒有可變數據類型,但根據變數的範圍有三種類型。

  • 全局變數 - 所有變數都被視為全局變數,除非明確聲明為局部變數。
  • 局部變數 - 當為變數指定類型為local時,其範圍受函數範圍限制。
  • 表字段 - 這是一種特殊類型的變數,可以保存除nil之外的任何內容,包括函數。

Lua變數定義

變數定義告訴解釋器為變數創建存儲的位置和數量。 變數定義具有可選類型,並包含該類型的一個或多個變數的列表,如下所示 -

type variable_list;

這裏,type是可選的本地或全局類型,而variable_list可以包含一個或多個由逗號分隔的識別字名稱。 這裏顯示了一些有效的聲明 -

local    i, j
local    i
local    a,c

local i,j都聲明並定義變數ij; 它指示解釋器創建名為ij的變數,並將範圍限制為局部。

變數可以在聲明中初始化(分配初始值)。 初始化程式包含一個等號,後跟一個常量運算式,如下所示 -

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_listvalue_list格式。 在上面的例子中,local d , f = 5 ,10variable_list中就是df,在value_list中就是510

Lua中的值賦值類似於variable_list中的第一個變數,value_list中的第一個值,依此類推。 因此,d的值為5f的值為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分配給變數g30分配給變數l


上一篇: Lua基礎語法 下一篇: Lua數據類型