lua變量
變量在使用前,必須顯式地聲明變量,即創建該變量.
編譯程序在執行代碼之前編譯器需要知道如何給語句變量開闢存儲區,用於存儲變量的值.
lua變量有三種類型:全局變量,局部變量,表中的域.
lua中的變量全是全局變量,哪怕是語句塊和函數裏,除非顯式地用local聲明爲局部變量.
局部變量的作用域爲從聲明位置開始到所在語句塊結束.
變量的默認值均爲nil.
a = 6
local b = 12
function cd()
c = 7
local d = 14
end
cd()
print(a) ---全局變量 6
print(b) ---局部變量 12
print(c) ---全局變量 7
print(d) ---局部變量 nil
賦值語句
賦值是改變一個變量的值和表域的最基本的方法
[root@iZ2zeg7wauly0hl9qmxvwlZ lua]# lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> a = 'hello'..'world'
> print(a)
helloworld
>
lua可以對多個變量同時賦值,變量列表和值列表的各個元素以逗號分開,賦值語句右邊的值分別賦給左邊的變量
[root@iZ2zeg7wauly0hl9qmxvwlZ lua]# lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> a,b=10,20
> print(a,b)
10 20
>
遇到賦值語句lua會先計算右邊的值然後再進行賦值操作,所以可以這樣交換變量的值
[root@iZ2zeg7wauly0hl9qmxvwlZ lua]# lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> a,b=10,20
> a,b=b,a
> print(a,b)
20 10
>
當變量個數和值的個數不一致時,lua會以變量的個數爲基礎採取一下策略
變量個數>值個數 按變量個數補足nil
變量個數<值個數 多餘的值會被忽略
[root@iZ2zeg7wauly0hl9qmxvwlZ lua]# lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> a,b,c=1,2
> print(a,b,c)
1 2 nil
> a,b=2,4,6
> print(a,b)
2 4
>
多值賦值經常用來變量交換或將函數的調用結果返回給變量
a,b=f()
函數f返回兩個值,一個給a,一個給b
應該儘量使用局部變量,這有兩個好處:
- 避免命名衝突
- 訪問局部變量比全局變量要快
索引
對table的索引使用方括號,lua也提供了.操作
t[i]
t.i -- 當索引爲字符串類型時的一種簡化寫法
gettable_event(t,i) -- 採用索引訪問本質上是一個類似這樣的函數調用
[root@iZ2zeg7wauly0hl9qmxvwlZ lua]# lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> a={}
> a['key']='value'
> print(a['key'])
value
> print(a.key)
value
>