1local demo = {"demoValue"}2localfunction fun()3print"hello world" 4end 5local tableDemo = { 6 ["a3132t"] = "valide?",7 [9] = fun,8 [fun] = "a funciton.",9 ["demo"] = "anoter string",
10 demo = "a string", --Syntactic sugar11 ["demo"] = "come on",
12"here to be coun...
Lua中table类似与C#种的字典,其实就是一个key-value键值对数据结构.来学习下table基本操作Table的创建myTable = {} --表名后面使用{}赋值,表示一个空的表
myTable = {name="盘子脸",age=18,isMan=true} --创建时候就添加键-值
myTable = {10,20,30,"plateface"} --创建数字下标值的table,默认是从1开始Table的赋值myTable[3] = 34--当键是一个数字的时候的赋值...
这个函数的作用是:生成只读table。--[[
-- 生成只读table
-- @param table t 需要不允许修改的tableexample:local tb = {"星期一", "星期二", "星期日"} local days = readOnly( tb );days[2] = "星期三哪去了啊?" ;"[string \"Functions.lua\"]:466: 别修改我!我是只读的!"
--]] function readOnly( t )local newT = tlocal mt = {__index = {}, -- 如果改成 newT = {}, __index = t, 会导致无法直接使用for循环遍历,...
Cocos2d-x 脚本语言Lua基本数据结构-表(table)table是Lua中唯一的数据结构,其他语言所提供的数据结构,如:arrays、records、lists、queues、sets等,Lua都是通过table来实现,并且在lua中table很好的实现了这些数据结构。--摘自:《Programming in Lua》看以下代码,可以很清晰的明白Lua中表的使用:-- Lua中的表,table
Config = {hello="Hello Lua",world="World"} -- 赋值方式1,以键=值的方式初始化
Config.words = "Hello" ...
Lua 内table遍历在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是:1. ipairsfor index, value in ipairs(table) doend注:这种方式的遍历只会从key为1的地方开始,一直以key递增1的顺序来遍历,若找到一个递增不是1的key就结束遍历,无论后面是否仍然是顺序的key。 1--Sample_1: 2local tab1 = 3{4 [1] = 1,5 [2] = 2,6 [3] = 3,7 [4] = 4,8}9for key, value inipairs(tab1) do10pr...
function dump(value, desciption, nesting)if type(nesting) ~= "number" then nesting = 3 endlocal lookupTable = {}local result = {}local function _v(v)if type(v) == "string" thenv = "\"" .. v .. "\""endreturn tostring(v)endlocal function _dump(value, desciption, indent, nest, keylen)desciption = desciption or "<var>"local spc = ""if type(keylen) == "number" thenspc = string.rep(" ", keylen - string....
弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的。弱表的定义是:A weak table is a table whose elements are weak references,元素为弱引用的表就叫弱表。有弱引用那么也就有强引用,有引用那么也就有非引用。我们先要厘这些基本概念:变量、值、类型、对象。 (1)变量与值:Lua是一个dynamically typed language,也就是说在Lua中,变量没有类型,它可以是任何东西,而值有类型,所以Lua中没有变量类型定...
关于table的文字说明我引用了lua程序设计的一些语句来概括表述: table类型实现了“关系数组”。“关系数组”是一种具有特殊索引方式的数组。不仅可以通过整数来索引他,还可以使用字符串活着其他类型的值(除了nil)来索引他。此外,table没有固定大小,可以动态的添加任意数量的元素到一个table中。 在lua中,table既不是“值”也不是“变量”,而是“对象”,可以将一个table想象成一种动态分配的对象,程序仅持有一个对他...
之前在《C/C++和Lua是如何进行通信的?》一文中简单的介绍了lua与宿主之间的通信。简单的说两种不同的语言之间数据类型不一样又如何进行数据交换呢?那就是lua_State虚拟栈,通过栈操作和lua库函数,我们很轻松就能完成两者之间的数据交换。 开始之前,明确几个问题,lua中的虚拟栈的索引编号问题(我们假设栈大小为n),编号1是栈底,n视栈顶,编号-1是栈顶,-n是栈底。lua中的库函数需要访问和操作栈上的数据都是通过索引编号...
又有同事在lua的table长度问题上犯错了,我们一起来看看吧~~~看以下代码:复制代码 代码如下:
local tblTest1 =
{
1,
2,
3
}
print(table.getn(tblTest1))
这段代码输出的结果是3,这个大家都知道,是吧。不管最后那个3后面有没有加逗号,结果都是3。
再看下面的代码:复制代码 代码如下:
local tblTest2 =
{
1,
a = 2,
3,
}
print(table.getn(tblTest2))
这段代码输出...
0、踩坑背景执行Torch-RNN的时候,在LanguageModel.lua中的encode_string函数中,对start_text的各个character进行id映射编码,实现功能类似“北京天安门”-->“5 10 88 32 111”,方便后面的计算。这个函数会利用一个全局的类似HashMap的table,hashmap中的key是character(char),value是id(int),涉及到一个从hashmap中按照key取值的操作,代码如下:local idx = self.token_to_idx[token]
assert(idx ~= nil, ‘Got invalid idx...
lua中json和table的互转,是我们在平时开发过程中经常用到的。比如:在用lua编写的服务器中,如果客户端发送json格式的数据,那么在lua处理业务逻辑的时候,必然需要转换成lua自己的数据结构,如table。此时,就会用到table和json格式的互转。在用lua编写的服务器中,如果我们通过redis来存储数据,由于redis中不存在table这种数据结构,因此,我们可以选择将table转换成json字符串来进行存储。在数据的存取过程中,也会用到table和...
一、table.insert()1.11local countries = {"China", "England", "Brazil"}
2--尾插法(Pos不填,默认插入尾部)3table.insert(countries, "France")
4--头插法(首部插入)5table.insert(countries, 1, "Australia")
67 dump(countries)二、table.remove()2.11local countries = {"China", "England", "Brazil", "England"}
2 table.removeItem(countries, "England", true)
3 dump(countries)2.21local countries =...
最近在重构自己写的框架中的定时器模块,需要把回调函数保存起来,大概如下:function timer_mgr:save_timer( this,callback )return { this = this,callback = callback}
end-- 创建新定时器
-- @after:延迟N秒后启动定时器
-- @repeated:N秒循环
-- @this:回调对象
-- @callbakck:回调函数function timer_mgr:new_timer( after,repeated,this,callback )local timer_id = self:next_id()self.timers[timer_id] = save_timer( thi...
这次要介绍的内容比较少,就一个——弱引用table1.无法超越人类智慧的智能——自动内存管理的缺陷我们都知道,Lua是具备自动内存管理的,好吧,也许有些朋友不知道。我们只管创建对象,无须删除对象(当然,对于不要的对象你需要设置一下nil值),Lua会自动删除那些被认为是垃圾的对象。问题就出现在,什么对象才是垃圾对象,有些时候,我们很清楚某个对象是垃圾,但是,Lua却无法发现。
比如这样一个例子:复制代码 代码如下:
t...