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
Lua表(table)的个人总结的更多相关文章
- Lua表(table)的用法_个人总结
Lua表(table)的用法_个人总结 1.表的创建及表的介绍 --table 是lua的一种数据结构用来帮助我们创建不同的数据类型.如:数组和字典--lua table 使用关联型数组,你可以用任意 ...
- Cocos2d-x 脚本语言Lua基本数据结构-表(table)
Cocos2d-x 脚本语言Lua基本数据结构-表(table) table是Lua中唯一的数据结构.其它语言所提供的数据结构,如:arrays.records.lists.queues.sets等. ...
- lua的table表去重
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 我的个人博客 方法一 用过lua的人都知道,lua的table中不允许存在相同的key,利用这个思想,我们可以将原始table ...
- lua表排序
对于lua的table排序问题,一般的按照value值来排序,使用table.sort( needSortTable , func)即可(可以根据自己的需要重写func,否则会根据默认来:默认的情形之 ...
- lua的table表处理 及注意事项
lua,一款很轻量级很nice很强大的脚本语言,做为lua中使用最为频繁的table表,在使用之时还是有颇多的好处与坑的: 下面是大牛 云风的一片关于lua table的blog,可使得对lua ta ...
- LUA表克隆方法归纳
lua表克隆 将lua一个表, 克隆出一份为一个独立的另外一个表. 对于一个module, 如果在require之后,获得的表对象, 不能直接修改, 例如lua缓存此表, 但是多次逻辑执行, 都使用的 ...
- lua weak table 概念解析
lua weak table 经常看到lua表中有 weak table的用法, 例如: weak_table = setmetatable({}, {__mode="v"}) 官 ...
- lua中 table 元表中元方法的重构实现
转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...
- lua中 table 重构index/pairs元方法优化table内存占用
转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...
- <4>Lua表
lua表 1: lua没有数组,但是表可以代替数组的功能(数组部分与非数组部分); 开始的, 1, 2, 3 ...称连续的索引; b.Lua表的连续索引的长度(数组部分); #表的名字; --数组 ...
随机推荐
- jq杂项方法/工具方法----isArray()
https://www.cnblogs.com/sandraryan/ $.isArray()函数用于判断指定参数是否是一个数组.返回布尔值. <!DOCTYPE html> <ht ...
- php页面最大执行时间 set_time_limit函数不起作用
作者: default|标签:PHP set_time_limit 执行时间|2017-3-21 15:03 set_time_limit 不生效或者无效解决方法 <?php globa ...
- 深入java面向对象二:final关键字
文章内容源于对<疯狂java讲义>及<疯狂Java:突破程序员基本功的16课>学习和总结. 一. final成员变量 final 修饰变量时,表示该变量一旦获取了值就不可以改变 ...
- 怎么实现Web聊天
如果你对web聊天这个事情没什么概念,那么最佳做法可能是:openfire+jsjac openfire是java做的开源xmpp服务器,jsjac是javascript做的开源的网页版xmpp客户端 ...
- .NET 创建 WebService
服务器端代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...
- Js中“==”和“===”的区别
从字面上来讲,‘==’代表相等,‘===’代表严格相等. 具体来讲,比较过程如下: 比较过程: ‘==’: 1. 首先判断两个值的类型是否相同,如果相同,进行‘===’判断. 2. ...
- java 菜单
继承体系 MenuBar,Menu,MenuItem之间的关系: 先创建菜单条,再创建菜单,每一个菜单中建立菜单项. 也可以菜单添加到菜单中,作为子菜单. 通过setMenuBar()方法,将菜单添加 ...
- linux内核符号表
我们已经看到 insmod 如何对应共用的内核符号来解决未定义的符号. 表中包含了全局内 核项的地址 -- 函数和变量 -- 需要来完成模块化的驱动. 当加载一个模块, 如何由模块 输出的符号成为内核 ...
- Apache ServiceMix介绍
Apache ServiceMix介绍 Apache ServiceMix 是一个广泛使用的开源ESB,适合SOA项目的集成,它提供类似商业ESB产品一样的功能呢,它的核心是基于开放标准和规范. Se ...
- 关于css中浮动的理解及实际应用
一.元素浮动的意义及使用:1. 浮动的意义:设置了浮动属性的元素会脱离普通标准流的控制,移动到其父元素中指定的位置的过程,将块级元素放在一行,浮动会脱离标准流,不占位置,会影响标准流,浮动只有左右浮动 ...