Lua面向对象 --- 封装

工程结构:

Player.lua:

 1 Player = {}
 2 
 3 function Player:new()
 4     local self = {}
 5     setmetatable(self, {__index = Player})
 6     return self
 7 end
 8 
 9 Player.name = "Player"
10 
11 function Player:get()
12     print("the function : get()")
13 end
14 
15 return Player
16 
17 --[[
18 两个点与一个点有什么区别呢?
19 一个点用来定义和取得一个变量,这个变量可能是个函数
20 两个点用来定义和调用一个函数,两个点会自动传入“调用者”这个table自身
21 先看简单的:
22 c = {a = 1, b = 2}
23 function c:foo()
24   print(self.a,self.b)
25 end
26 这里,c这个table定义了一个foo函数,用两个点定义的,在foo函数第一个参数的地方自动传入了c自身,然后调用一下
27 c:foo()
28 输出1 2
29 也可以这样,一个点调用函数,手动传入table:c.foo(c)
30 输出也是一样的
31 --]]

main.lua:

 1 require "Player"
 2 
 3 player1 = Player:new()
 4 print(player1.name)
 5 player1:get()
 6 
 7 --[[
 8 输出结果:
 9 Player
10 the function : get()
11 --]]

猜你喜欢

转载自www.cnblogs.com/luguoshuai/p/9224351.html