• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

LUA table

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1 table实现介绍

脚本table中的元素在c中是分两个地方存放的,即数组与hash表。table中元素的位置也不是一直固定的,它会根据table被修改的情况动态改变。下面分两种情况说一下table的特点,我们首先要知道在lua中,索引值可以为负数也可以为正数,当为负数的话,top为-1,当为正数第一个压入栈的元素为1,依此类推,如果构造table的时候指定了key的值,不管key是何值,也会将key进行hash。比如

t1 =
{
[1] = 100,
[2] = 200,
[3] = 300,
}

只有构造table时不指定key值,这些value才会放在数组段。比如
t2 = {100, 200, 300}

 

2 表访问的一些规则

  • table支持几乎是所有类型的下标包括函数
  • 对于字符串下标,我们可以省略方框和双引号,但是数字下标不可以
  • table默认的第一个索引下标是1,如果没有指定下表,就只能通过索引值来访问表的成员

 

3 table操作

//
//如果设置的k:v k是字符串,也可能是其它lua数值类型(比如常见的数字索引),可以使用lua_settable
//void (lua_settable) (lua_State *L, int idx);
//idx 指的是要操作的表在堆栈的位置
//key 和value在哪呢,在栈上面,一般情况下栈如下
// |value| stack top
// |key |
// |table| stack bottom
//

 

//lua_rawset用法同lua_settable,但更快(因为当key不存在时不用访问元方法__newindex)


//
//如果设置的k:v k是字符串,可以使用lua_setfield方便点
//LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k);
//idx 指的是要操作的表在堆栈的位置
//k表示要设置的key
//那value在哪呢?就是栈顶.
//


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap