Lua中的Table操作

Lua中table类似与C#种的字典,其实就是一个key-value键值对数据结构.来学习下table基本操作

Table的创建

myTable = {}                                         --表名后面使用{}赋值,表示一个空的表
myTable = {name="海洋",age=18,isMan=true}            --创建时候就添加键-值
myTable = {10,20,30,"Ocean"}                        --创建数字下标值的table,默认是从1开始
Table的赋值

myTable[3] = 34                   --当键是一个数字的时候的赋值方式
myTable["name"] = "海洋"           --当键是一个字符串的赋值方式

myTable.name = "Ocean"        --跟myTable["name"]访问的是同一个value, print(myTable.name) 输出Ocean
Table的访问

myTable[3]          --当键是数字的时候,只有一种访问方式
myTable.name        --当键是字符串的时候有两种访问方式
myTable["name"]
Table的遍历

myTable = {10,20,30,40}
for index=1,table.getn(myTable) do
    print(myTable[index])
end

for index,value in ipairs(myTable) do
    print(index,value)
end

表相关的函数:

table.conccat 把表中所有数据连成一个字符串
table.insert 在表中2的位置插入一个
table.remove 移除指定位置的数据
table.sort 排序

在Lua中没有类的概念,都是用表来创建的
Enemy = {}
local this = Enemy

--定义属性
Enemy.hp = 100
Enemy.speed = 12.3

--定义方法
Enemy.Move = function()
    print("敌人在移动")
end

function Enemy.Attack()
    print(this.hp," 敌人的HP")
    this.Move()
end

--调用攻击方法
Enemy.Attack()

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 12:28:41

Lua中的Table操作的相关文章

lua中的字符串操作(模式匹配)

模式匹配函数 在string库中功能最强大的函数是: string.find(字符串查找)string.gsub(全局字符串替换)string.gfind(全局字符串查找)string.gmatch(返回查找到字符串的迭代器) 这些函数都是基于模式匹配的.与其他脚本语言不同的是,Lua并不使用POSIX规范的正则表达式[4](也写作regexp)来进行模式匹配.主要的原因出于程序大小方面的考虑:实现一个典型的符合POSIX标准的regexp大概需要4000行代码,这比整个Lua标准库加在一起都大

lua中遍历table的几种方式比较

在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do XXX end for i=1, table.maxn(tbtest) do XXX end 前两种是泛型遍历,后两种是数值型遍历.当然你还会说

递归打印lua中的table

递归打印lua中的table,并写到文件里: 1 local pairs_by_keys = function(inTable) 2 local temp = {} 3 for k, v in pairs(inTable) do 4 temp[#temp + 1] = k 5 end 6 7 local compare = function(a, b) 8 if type(a) == type(b) then 9 return a < b 10 elseif type(a) == "num

Lua中的table函数库

table.concat(table, sep,  start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开.除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长. sep, start, end这三个参数是顺序读入的, 所以虽然它们都不是必须参数,

lua中的table、stack和registery

ok,前面准备给一个dll写wrapper,写了篇日志,看似写的比较明白了,但是其实有很多米有弄明白的.比如PIL中使用的element,key,tname,field这些,还是比较容易混淆的.今天正好搞搞清楚. 1.stack 这个应该不用多讲了,C和lua中的交互就是基于一个stack的,而且每次lua调用一个c函数,都是给分配一个新的stack.它的原型: typedef int (*lua_CFunction) (lua_State *L); stack中的基本单元在PIL中多成为ele

lua中使用table实现类和继承

--因为只有当读写不存在的域时,才会触发__index和__newindex classA = {className = "classA",name="classAInst"} function classA:new(newobject) newobject = newobject or {} setmetatable(newobject, {__index = self})--当在newobject找不到key对应的value时,就到self(即classA)类中

Lua中table类型的源码实现

  1.概述 table是lua中唯一的表示数据结构的工具.它可以用于实现数据容器.函数环境(Env).元表(metatable).模块(module)和注册表(registery)等其他各种用途.因此了解table的实现是非常有必要的,根据<Lua中数据类型的源码实现>中知道,在Lua中,table是由结构体体Table来实现的.下面将以Lua 5.2.1的源码来看table的实现.   2.实现原理 在Lua5.0以后,table是以一种混合型数据结构来实现的,它包含一个哈希表部分和一个数

lua 中table的使用和分析

1.table有4种基本操作:读,写,迭代和获取长度. lua中没有删除操作而是将对应键位的值设置为nil. lua的内部定义是在lobject.h </pre><pre code_snippet_id="580775" snippet_file_name="blog_20150115_1_6202329" name="code" class="python"><pre name="co

Torch-RNN运行过程中的坑 [1](读取Lua非空table,size为0)

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取值的操作,代码如