Lua的值和類型
Table:
a={}
a[1] = 12.4
a["hello"] = 20
a[12.4] = "aaa"
print(a.hello,a[1],a[a[1]])
結果:
20 12.4 aaa
還可以這樣定義:
a={
["name"] = 2,
[5] = true,
}
print(a.name,a[5])
結果:
2 true
注意:
Lua的數組從1開始。a[1]是第一個
函數
1.函數類型值
--傳統定義
function add( a,b )
return a + b
end
--函數類型值 定義
plus = function ( a,b )
return a + b
end
ap = plus
print(add(1,2),plus(3,4),ap(5,6))
結果:
3 7 11
2.多返回值以及多變量賦值
a,b = 1,2,3
b,a = a,b
function cal( a,b )
return a,b,a*b
end
print(cal(a,b))
結果:
2 1 2
表達式
與或非分別對應:
and
or
not字符串拼接
print("Hey".."Boy")
結果HeyBoy
儘量使用local
function f1( ) a = 10 end function f2( ) b = 100 end function f3( ) local c = 1000 end f1() f2() f3() print(a,b,c)
結果:
10 100 nil
注意:
Lua沒有自增所以沒a++這種表達式
流程控制
- if語句
function com( a,b )
if a>b then
return a
elseif a==b then
return "equal"
else
return b
end
end
- while語句
local i=0
while i<10 do
print(i)
i = i+1
end
- for語句
--等價 for i=0,5,1 do
for i=0,5 do
print(i)
end
結果:
0
1
2
3
4
5
a = {
["small"] = 1,
[10] = false,
[1] = 20,
[2] = 30,
}
print("pairs")
--pairs迭代器:遍歷所有
for k,v in pairs(a) do
print(k,v)
end
print("ipairs")
--ipairs迭代器:遍歷數組部分不遍歷映射
for k,v in ipairs(a) do
print(k,v)
end
--以上遍歷都是隨機順序
結果:
pairs
2 30
small 1
10 false
1 20
ipairs
1 20
2 30
包
文件一:foo.lua
local class={}
function class.foo(a,b)
return a + b
end
return class
文件二:
--加載foo.lua
local c = require("foo")
print(c.foo(1,2))
結果:3
Lua的系統庫
- table的方法:
local t={}
for i=1,3 do
table.insert(t,i)
end
table.remove(t,2)
for k,v in pairs(t) do
print(k,v)
end
結果:
1 1
2 3
映射的刪除:
local t={} t.a = 1 t.b = 2 t.a = nil for k,v in pairs(t) do print(k,v) end
結果:
b 2- 查看數組長度
local t1 = {5,1,3,4}
local t2 = {"hello"}
print(#t1.."\n"..#t2)
結果:
4
1
- 其他系統庫函數
local a = tonumber("3.14")
local b = tostring(120)
print(a,type(a))
print(b,type(b))
print(string.format("hi %d",2))
結果:
3.14 number
120 string
hi 2