lua語法-變數(全域性變數與區域性變數)
全域性變數:直接定義變數名,並賦值
例如,a = 1;
注:用;結束當前語句(可選,也可以不使用分號)
區域性變數:使用local
關鍵字進行定義
例如,local b = 2;
變數命名規則
- 遵循C/C++語言中的變數命名規則
避免定義下劃線開頭並立即跟著大寫字母的變數名
- lua關鍵字不能用作變數名
例如,以下變數定義語句合法:
s = "lua";
i = 1;
\_float\_ = 0.01
PI = 3.14
複製程式碼
例如,以下變數定義語句不合法:
if = "err";
_Err = 0.1;
識別符號= 1;
\_PI\_ = 3.14
複製程式碼
lua中的變數使用:
- 可以在一行定義多個變數,儘量在定義變數時賦值
注:可以使用一個 = 對多個變數進行賦值,賦值採用一一對應原則,如果變數和值不是一一對應,則未賦值的變數預設值為nil
- 定義變數時
不需要宣告型別
,變數僅具有動態型別,不具有靜態型別 未賦值的變數,其值預設為nil(空值)
例如,
a = 1
b,c = "2"
d = 3,4
複製程式碼
以上程式執行完之後,變數的值分別是:
a = 1
b = 2
c = nil
d = 3
變數使用的注意事項
- 定義變數時不需要宣告型別
- 區域性變數的作用於僅限於塊中(if,else,while,do,function)
- 在lua中儘可能使用區域性變數(訪問速度更快)
- 當不再使用全域性變數的時候,用nil進行賦值
變數定義例項程式:
a,b = 1,2,3;
str = "global";
do
local x,y = a,b;
local str = str;
--區域性變數str的值由全域性變數str(global)進行傳遞
print("str = ",str);
--將str區域性變數進行重新賦值,str區域性變數的值變為local
str = "local";
print("str = ",str);
print("x = ",x);
print("y = ",y);
print("a = ",a);
print("b = ",b);
end
print("---------------------\n");
print("str = ",str);
--以下輸出語句均針對全域性變數
print("x = ",x);
print("y = ",y);
print("a = ",a);
print("b = ",b);
a,b,str = nil;
複製程式碼
以上程式執行之後的輸出結果為:
str = global
str = local
x = 1
y = 2
a = 1
b = 2
---------------------
str = global
x = nil
y = nil
a = 1
b = 2
分析:
- do......end之間定義的變數均為區域性變數
- 當end執行後,所有區域性變數生命週期結束;故在end之後,輸出x和y均為未賦值的變數,變數值均為nil。