lua table integer index 特性
table.maxn (table)
Returns the largest positive numerical index of the given table, or zero if the table has no positive numerical indices. (To do its job this function does a linear traversal of the whole table.)
返回表中最大的正数值index。
说明:
1、 此接口不是统计表中元素的数目。
2、 如果表中 positive numerical index 不是连续的, 12 4, 缺少3为index的元素, 计算值为 maxn为 4。
local test = {}
table.insert(test, {})
table.insert(test, , {})
print("table.maxn(test)="..table.maxn(test))
for i,v in pairs(test) do
print("i="..i.." v="..tostring(v))
end
LOG:
>lua -e "io.stdout:setvbuf 'no'" "luatest.lua"
table.maxn(test)=4
i=1 v=1
i=2 v=table: 00559670
i=4 v=table: 005597B0
FOR IPAIRS vs Non Positive Integer Index
对于不连续的 positive integer index情况, 如果使用 ipairs 迭代器, 只能获取第一个连续的index段。
故不能遍历所有元素, 如果需要则使用 pairs迭代器。
local test = {}
table.insert(test, {})
table.insert(test, , {})
print("table.maxn(test)="..table.maxn(test))
for i,v in ipairs(test) do
print("i="..i.." v="..tostring(v))
end
LOG:
>lua -e "io.stdout:setvbuf 'no'" "luatest.lua"
table.maxn(test)=4
i=1 v=1
i=2 v=table: 00339580
table.remove (table [, pos])
Removes from
tablethe element at positionpos, shifting down other elements to close the space, if necessary. Returns the value of the removed element. The default value forposisn, wherenis the length of the table, so that a calltable.remove(t)removes the last element of tablet.
删除pos位置元素, 并将左边的高index元素向左移动一个位置。 此处所指的高index是指左侧所有的 元素, 故 maxn值会减少1.
local test = {}
table.insert(test, {})
table.insert(test, , {})
print("table.maxn(test)="..table.maxn(test))
for i,v in pairs(test) do
print("i="..i.." v="..tostring(v))
end
table.remove(test, )
print("table.maxn(test)="..table.maxn(test))
for i,v in pairs(test) do
print("i="..i.." v="..tostring(v))
end
LOG:
>lua -e "io.stdout:setvbuf 'no'" "luatest.lua"
table.maxn(test)=4
i=1 v=1
i=2 v=table: 00589350
i=4 v=table: 005892B0
table.maxn(test)=3
i=1 v=table: 00589350
i=3 v=table: 005892B0
>Exit code: 0
table.insert (table, [pos,] value)
Inserts element
valueat positionposintable, shifting up other elements to open space, if necessary. The default value forposisn+1, wherenis the length of the table (see §2.5.5), so that a calltable.insert(t,x)insertsxat the end of tablet.
将元素value插到pos位置, 此位置以及以上的元素都向右边移动一位。 会将maxn值加1.
local test = {}
table.insert(test, {})
table.insert(test, , {})
print("table.maxn(test)="..table.maxn(test))
for i,v in pairs(test) do
print("i="..i.." v="..tostring(v))
end
table.insert(test, , )
print("table.maxn(test)="..table.maxn(test))
for i,v in pairs(test) do
print("i="..i.." v="..tostring(v))
end
LOG:
>lua -e "io.stdout:setvbuf 'no'" "luatest.lua"
table.maxn(test)=4
i=1 v=1
i=2 v=table: 00979800
i=4 v=table: 009795F8
table.maxn(test)=5
i=1 v=33
i=2 v=1
i=3 v=table: 00979800
i=5 v=table: 009795F8
>Exit code: 0
table.remove vs nil set
nil 不会做 将右边的元素向左移动一位的动作, remove会。
local test = {}
table.insert(test, {})
table.insert(test, , {})
print("table.maxn(test)="..table.maxn(test))
for i,v in pairs(test) do
print("i="..i.." v="..tostring(v))
end
test[] = nil
print("table.maxn(test)="..table.maxn(test))
for i,v in pairs(test) do
print("i="..i.." v="..tostring(v))
end
LOG:
>lua -e "io.stdout:setvbuf 'no'" "luatest.lua"
table.maxn(test)=4
i=1 v=1
i=2 v=table: 003D9508
i=4 v=table: 003D9580
table.maxn(test)=4
i=2 v=table: 003D9508
i=4 v=table: 003D9580
>Exit code: 0
lua table integer index 特性的更多相关文章
- Lua table使用
days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Th ...
- 【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态
一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是 ...
- 9.6 翻译系列:数据注解之Index特性【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/entityframework6/index-attribute-in-code-first.aspx EF ...
- 【转载】【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态
[游戏开发]在Lua中实现面向对象特性——模拟类.继承.多态 阅读目录 一.简介 二.前提知识 三.Lua中实现类.继承.多态 四.总结 回到顶部 一.简介 Lua是一门非常强大.非常灵活的脚本语 ...
- 树形打印lua table表
为方便调试lua程序,往往想以树的形式打印出一个table,以观其表内数据.以下罗列了三种种关于树形打印lua table的方法;法一 local print = print local tconca ...
- lua table 排序--满足多条件排序
前提 假设 一个小怪 有三种属性,等级(level).品质(quality).id(pid) 我们需要对他们进行排序,两种排序情况,第一是单一属性排序,比如按照等级进行排序,或者多种属性进行优先级排序 ...
- cocos2d-x lua table数据存储
cocos2d-x lua table数据存储 version: cocos2d-x 3.6 1. 将table转为json http://blog.csdn.net/songcf_faith/art ...
- cocos2d-x lua table与json的转换
cocos2d-x lua table与json的转换 version: cocos2d-x 3.6 1.引入json库 require("src/cocos/cocos2d/json&qu ...
- lua table表
lua table表 语法结构 创建一个 table 直接使用 "{}" 即可 table1 = {} -- 赋值 table1["name"] = " ...
随机推荐
- java基础(二)
1.equals()方法是可以重写的,因此说equals方法是判断两个对象的值是否相等是不完全正确的,当重写方法时可以定义自己的相等规则. 2.Java中的类可以包含六中元素;属性.方法.代码块.内部 ...
- Vue#组件
组件: 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能. 使用: ...
- Linux第01天
Linux第01天 1.虚拟机安装linux(centos 32bit) 1.1 虚拟机安装前置工作的准备,如内存.硬盘.CPU分配.镜像下载等 1.2 安装方式(图形界面或者命令行 推荐图形界面即直 ...
- 数据结构之平衡二叉树(AVL树)
平衡二叉树(AVL树)定义如下:平衡二叉树或者是一棵空树,或者是具有以下性质的二叉排序树: (1)它的左子树和右子树的高度之差绝对值不超过1: (2)它的左子树和右子树都是平衡二叉树. AVL树避免了 ...
- Qt写Activex插件 总结
最近写的插件功能基本完成,也遇到了一些坑,在这里记录一下. 我写的这个插件的js接口是仿造google earth的js接口,尽可能的达到与它的api一致.先从最简单的说起: 1. 导出接口中的flo ...
- MySQL生成模型
根据数据库表生成Model using System; using System.Collections.Generic; using System.Data; using System.Text; ...
- 【python+mysql】在python中调用mysql出问题 ImportError: No module named MySQLdb.constants
遇到如下异常: File "C:\Users\Neil\PycharmProjects\ScrapyDouban\book\book\database.py", line 4, i ...
- *HDU1800字典树
Flying to the Mars Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- poj1543-Perfect Cubes(暴力)
水题:求n^3 = a^3 + b^3 + c^3 ;暴力即可 #include<iostream> using namespace std; int main(){ int n ; c ...
- 简单快速部署samba服务器
samba是一种在linux环境运行的免费软件,可以为局域网内的不同计算机系统之间提供文件以及打印机等资源的共享服务. samba服务安装和配置: 1.安装gcc编译器以及samba服务和samba依 ...