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
廣告
© . All rights reserved.