五、企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUI之Lua 變數

JIAN2發表於2021-12-14

Lua 變數

變數在使用前,需要在程式碼中進行宣告,即建立該變數。

編譯程式執行程式碼之前編譯器需要知道如何給語句變數開闢儲存區,用於儲存變數的值。

Lua 變數有三種型別:全域性變數、區域性變數、表中的域。

Lua 中的變數全是全域性變數,哪怕是語句塊或是函式裡,除非用 local 顯式宣告為區域性變數。

區域性變數的作用域為從宣告位置開始到所在語句塊結束。

 需要框架原始碼的朋友可以看我個人簡介聯絡我,

變數的預設值均為 nil。

例項

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- test.lua 檔案指令碼
a =  5                -- 全域性變數
local b =  5          -- 區域性變數
 
function  joke()
     c =  5            -- 全域性變數
     local d =  6      -- 區域性變數
end
 
joke()
print(c,d)          -->  5  nil
 
do
     local a =  6      -- 區域性變數
     b =  6            -- 對區域性變數重新賦值
     print(a,b);     -->  6  6
end
 
print(a,b)      -->  5  6

執行以上例項輸出結果為:

1
2
3
4
$ lua test.lua 
5     nil
6     6
5     6

賦值語句

賦值是改變一個變數的值和改變表域的最基本的方法。

1
2
a =  "hello"  ..  "world"
t.n = t.n +  1

Lua 可以對多個變數同時賦值,變數列表和值列表的各個元素用逗號分開,賦值語句右邊的值會依次賦給左邊的變數。

1
a, b =  10 2 *x       <-->       a= 10 ; b= 2 *x

遇到賦值語句Lua會先計算右邊所有的值然後再執行賦值操作,所以我們可以這樣進行交換變數的值:

1
2
x, y = y, x                     -- swap  'x'  for  'y'
a[i], a[j] = a[j], a[i]         -- swap  'a[i]'  for  'a[j]'

當變數個數和值的個數不一致時,Lua會一直以變數個數為基礎採取以下策略:

1
2
a. 變數個數 > 值的個數             按變數個數補足nil
b. 變數個數 < 值的個數             多餘的值會被忽略

例項

1
2
3
4
5
6
7
8
a, b, c =  0 1
print(a,b,c)             -->  0    1    nil
  
a, b = a+ 1 , b+ 1 , b+ 2      -- value of b+ 2  is  ignored
print(a,b)               -->  1    2
  
a, b, c =  0
print(a,b,c)             -->  0    nil   nil

上面最後一個例子是一個常見的錯誤情況,注意:如果要對多個變數賦值必須依次對每個變數賦值。

1
2
a, b, c =  0 0 0
print(a,b,c)             -->  0    0    0

多值賦值經常用來交換變數,或將函式呼叫返回給變數:

1
a, b = f()

f()返回兩個值,第一個賦給a,第二個賦給b。

應該儘可能的使用區域性變數,有兩個好處:

  • 1. 避免命名衝突。
  • 2. 訪問區域性變數的速度比全域性變數更快。

索引

對 table 的索引使用方括號 []。Lua 也提供了 . 操作。

1
2
3
t[i]
t.i                 -- 當索引為字串型別時的一種簡化寫法
gettable_event(t,i) -- 採用索引訪問本質上是一個類似這樣的函式呼叫

例項

1
2
3
4
5
6
> site = {}
> site[ "key" ] =  "
> print(site[ "key" ])
> print(site.key)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70006413/viewspace-2847670/,如需轉載,請註明出處,否則將追究法律責任。

相關文章