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"] = " ...
随机推荐
- QQ列表展示
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- ThinkPHP的D方法和M方法的区别
M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...
- 12 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例
EL应用 自定义一个标签,实现两个字符串的相加 1回顾 1.1servlet生命周期 init(ServletConfig) service ...
- 2016 Multi-University Training Contest 2
8/13 2016 Multi-University Training Contest 2官方题解 数学 A Acperience(CYD)题意: 给定一个向量,求他减去一个 α(>=0)乘以 ...
- IDE-Sublime【2】-代码智能提示插件SublimeCodeIntel的安装
一.打开菜单References -> Package Control 二.输入Package Control: install Package,回车 三.输入SublimeCodeIntel, ...
- 两个多项式相加 ( C++ )
实现两个多项式进行相加 不开辟空间 ( 这要求实现进行相加,代价为两个原链表将被修改) 分析: this>other 就把other当前结点放置在this之前 this<other 就th ...
- Ubuntu不显示壁纸,桌面右键无反应解决
用ubuntu tweak调整ubuntu的桌面图标显示,导致桌面无法显示壁纸,桌面点击右键无发应。 解决办法:Ubuntu Tweak中“调整”选项卡-》”显示桌面图标“的选项一定要打开,处于ON状 ...
- scrollview 嵌套 折叠效果
------------------------------- --@ CreateDate: 2015.08.05 --@ Author: 王成成 --@ FileName: BaoSh ...
- android——从零开始
一.JDK(不用安装)1.下载适合的jdk2.配置环境变量 添加一系统边=变量 JAVA_HOME=D:\Java\jdk1.8.0_91 CLASSPATH=.;%JAVA_ ...
- C++ 画星号图形——圆形(核心代码记录)
void Circle::print_char(int x1,int x2) { int i; // 计算这一行的宽度,终端最多显示80列 ; n = n > ? : n; ; i < n ...