Lua

First Post:

Last Update:

Word Count:
523

Read Time:
2 min

Lua

Table

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
--定义局部变量,只能在当前文件使用
local var = 0

--定义全局变量
var2 = 1

--注释

-- 表
print("表: table")

myTable = {}

myTable.word = "hello"
myTable.num = 100
print(myTable.word)
print(myTable.num)

print(myTable["word"])

myTable2 = {hello = "Hello lua"}
print(myTable2["hello"])

-- 遍历table

for key, var in pairs(myTable) do
print(key, var)
end

--数组
print("数组")

arr1 = {1, 2, 3, 4, 5, "hello"}

--打印数组
for key, var in pairs(arr1) do
print(key, var)
end

arr2 = {}
-- 采用api初始化数组
for var=1, 100 do
table.insert(arr2, 1, var)
end

--print()#
--打印数组
--for key, var in pairs(arr2) do
-- print(key, var)
--end

--print(arr)

面向对象

采用复制表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
--采用复制表方式实现面向对象

-- 采用table+clone来实现

--用于复制table,返回一个新的table
function clone(tab)
local ins = {}
for key, var in pairs(tab) do
ins[key] = var
end
return ins
end

--创建一个table
People = {}

People.say = function()
print("People say")
end

local p = clone(People)

p.say()


-- 采用自己构造的方法来实现

People2 = {}
People2.new = function(name)
local self = clone(People2)
self.name = name
return self
end

People2.say = function(self)
print("People2 :"..self.name.." say")
end

local p = People2.new("I0gan")
p.say(p)

p:say() -- 等价于 p.say(p)

类的继承

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
-- 采用复制表方式实现类的继承

function clone(tab)
local ins = {}
for key, var in pairs(tab) do
ins[key] = var
end
return ins
end


function copy(dist, tab)
for key, var in pairs(tab) do
dist[key] = var
end
end


People = {}
People.say = function()
print("People say")
end
People.new = function()
return clone(People)
end


Man = {}
Man.new = function(name)
local self = People.new() -- 继承People类
copy(self, Man)
return self
end

Man.manSay = function()
print("Man say")
end


m = Man.new()
m.say() -- 调用父类方法
m.manSay() -- 调用自己的方法

采用函数闭包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
--函数闭包方式实现面向对象

function People(name)
local self = {}
local function init()
self.name = name
end

self.say = function()
print("People: "..self.name.." say")
end
init() --相当于构造函数,私有化函数
return self
end


local p = People("I0gan")
p:say()


-- 类的继承

function Man(name)
local self = People(name)
self.manSay = function()
print("Man: "..self.name.." say ...")
end
return self
end

local m = Man("I0gan")

m.say() --调用父类方法
m.manSay() --调用子类方法
打赏点小钱
支付宝 | Alipay
微信 | WeChat