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 --]]
码云上的相关工程:https://gitee.com/luguoshuai/LearnLua