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