Lua表(table)的个人总结
1.表的简介和构造
table是个很强大且神奇的东西,又可以作为数组和字典,又可以当作对象,设置module。它是由数组和哈希表结合的实现的。他的key可以是除nil以外任意类型的值,key为整数时,就可以当作一个数组了。
构造:
mtable={} --创建一个空表
mtable[1]="Hello” --指定值
mtable[1]=nil --删除元素
mtable=nil --移除引用
2.表的常见函数
①table.sort(table [,compare])排序
②table.insert(table [,pos], value)插入,默认插入末尾
③table.remove(table [, pos])移除,默认从尾部开始移除
④table.concat(table [,sep [,start [,end]]]) 连接,把table里从start到end的元素以sep为分隔符连接起来。
3.模块
模块(module),lua是通过table来实现模块的。
创建一个lua模块文件module.lua,代码如下:
-- 通常是加local的,加了local是局部变量,需要return一下。 -- 如果不加,则M默认注册到_G中,require后,即使不return也可以直接使用M。 local module = {} -- 定义一个常量 module.constant = "这是一个常量" -- 定义一个函数 function module.func1() print("这是一个公有函数!") end local function func2() print("这是一个私有函数!") end function module.func3() func2() end return module
关于使用module,lua提供了require函数用来加载模块。加载上面所写的模块,require “module”或者require("module")。加载路径存在全局变量package.path里。
4.面向对象
lua可以通过table+function模拟类,table描述属性,function表示方法。
简单的例子如下:
Animal={age=0,weight=0} function Animal:new(o,age,weight) o=o or {} setmetatable(o,self) self.__index=self age=age or 0 weight=weight or 0 return o end function Animal:printWeight() print("动物的体重:",self.weight) end
Lua继承,是一个对象对象直接使用另一个对象的属性与方法。可用于扩展基础类的属性和方法,可以重写基础类的函数。例子如下:
Dog= Animal:new() function Dog:new(o,age,weight) o=o or Animal:new(o,age,weight) setmetatable(o,self) self.__index=self return o end
function Dog:printWeight()
print("狗的体重:",self.weight)
end