Lua中没有像C、C++、JAVA中的类概念,面向对象等 ,但我们可以模拟出来
1. Lua中有个很重要的概念元表
设置元表setmetatable()函数 获取元表getmetatable()函数
例子如下:
元表中有个很重要的Key __index
代码:
local Person = { __index = { name = "jadeshu", age = 28, sex = 0, } } --表 local man = {} --表 setmetatable(man,Person) --设置元表 --man的元表是Person --测试 print(man.name) --显示 jadeshu
---即如果在表里面找不到的key,Lua解释器在元表里面的__index表里进行查找;
2. 冒号和self
冒号 (:) 多了个self机制,增加了实例传递,如下
代码如下
local Person = {} function Person:getName() print("call Person:getName()",self) end --当调用函数时,会传递self --self指的是Person这个实例表 Person:getName() --call Person:getName() table:006D76B8 --注意区别. function Person.getAge() print("call Person:getAge()",self) end Person.getAge() --call Person:getAge() nil --冒号相当于点号如下操作 function Person.getSex(person) print("call Person:getSex()",person) end Person.getSex(Person) --call Person:getSex() table:006D76B8