免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5095 | 回复: 18
打印 上一主题 下一主题

starwing83请进,关于lua和C交互的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-16 12:01 |只看该作者 |倒序浏览
三月廿七:Lua P16  "就Lua习惯而言, 数组通常是以1作为索引的起始值",
联想起之前做lua程序遇到的问题。

这里有一篇流传甚广的网文
http://www.61ic.com/Mobile/iPhone/201108/36975.html

其中lua_newtable处,有这样一句
//a tricktherwise the lua engine will crash. This element is invisible in Lua script  
看似是在数据下标0处放了一个元素。

就我实际的测试看,这个完全没必要。
于是不无怀疑,这个trick是个将错就错的bug ---
可能原作者在某处按下标0访问了lua的数组,导致程序崩溃。
然后他就再犯一个错误,填入一个下标0,将原先的bug掩盖过去。

不确定到底要不要下标0的元素呢?请指教。

论坛徽章:
0
2 [报告]
发表于 2012-05-16 12:22 |只看该作者
Lua  就是 Basic 的翻版,

论坛徽章:
0
3 [报告]
发表于 2012-05-16 14:57 |只看该作者
这里之所以0开始机器,1开始符合人理解,而C是历史语言,用0也是情有可原
lua用1,只是让人有时候不习惯,不过熟悉了应该不是什么大问题。

0   1    2   3
[ ]  [ ]  [ ]  [ ]
01 23 45  67

这种。地址是不需要存储的,或者不需要和指向内存(你的对象数据)存在一起(连续内存),只是一个引用,所以指向的内存直接就是真正的内容。一些脚本语言这个就可以违背,可以对布局进行修改。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
4 [报告]
发表于 2012-05-16 15:29 |只看该作者
三月廿七 发表于 2012-05-16 12:22
Lua  就是 Basic 的翻版,


因为下标都从1开始?

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
5 [报告]
发表于 2012-05-16 16:18 |只看该作者
回复 2# 三月廿七


    我懒得对你扫盲了

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
6 [报告]
发表于 2012-05-16 16:19 |只看该作者
本帖最后由 starwing83 于 2012-05-16 16:21 编辑

回复 1# AD8018


    顺便说一下,访问0不会导致Lua出错,甚至是很合法的行为,有可能是业务逻辑出错神马的~

UPDATE:Lua的表虽然可以当做数组使用,但实际上它和数组时完全不一样的东西,概念实现和应用都不一样,表做数组使用只是因为数组的key恰好全是数字而已。事实上,Lua的表就是映射。新的Lua语言规范已经说明了,只有满足sequence条件的表才能被标准table库中的某些函数和#操作符操作,这只是Lua提供的方便操作,和表盒数组都没有多大关系。

论坛徽章:
0
7 [报告]
发表于 2012-05-16 19:05 |只看该作者
OwnWaterloo 发表于 2012-05-16 15:29
因为下标都从1开始?


最主要的是没有花括号

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
8 [报告]
发表于 2012-05-17 09:08 |只看该作者
回复 7# 三月廿七


    嗯,而且不等于是~=?继续继续,,看看你下限能到什么程度

论坛徽章:
0
9 [报告]
发表于 2012-05-17 09:52 |只看该作者
starwing83 发表于 2012-05-17 09:08
回复 7# 三月廿七

没有下限
抱歉,我不写 Lua,  Lua是给策划用的,

论坛徽章:
0
10 [报告]
发表于 2012-05-17 10:41 |只看该作者
这里是 c版, 不会 Lua很丢人吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP