Lua面向对象 --- 封装

时间:2021-01-25 17:02:52

工程结构:

Lua面向对象 --- 封装

Player.lua:

 Player = {}

 function Player:new()
local self = {}
setmetatable(self, {__index = Player})
return self
end Player.name = "Player" function Player:get()
print("the function : get()")
end return Player --[[
两个点与一个点有什么区别呢?
一个点用来定义和取得一个变量,这个变量可能是个函数
两个点用来定义和调用一个函数,两个点会自动传入“调用者”这个table自身
先看简单的:
c = {a = 1, b = 2}
function c:foo()
  print(self.a,self.b)
end
这里,c这个table定义了一个foo函数,用两个点定义的,在foo函数第一个参数的地方自动传入了c自身,然后调用一下
c:foo()
输出1 2
也可以这样,一个点调用函数,手动传入table:c.foo(c)
输出也是一样的
--]]

main.lua:

 require "Player"

 player1 = Player:new()
print(player1.name)
player1:get() --[[
输出结果:
Player
the function : get()
--]]

码云上的相关工程:https://gitee.com/luguoshuai/LearnLua