lua語法-變數的定義與使用

sun_shine發表於2018-03-04

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。

相關文章