加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Lua中,我应该如何处理来自C的零数组索引?

发布时间:2020-12-15 00:23:31 所属栏目:大数据 来源:网络整理
导读:在C代码中,我有一个数组和一个基于零的索引,用于在其中查找,例如: char * names[] = {"Apple","Banana","Carrot"};char * name = names[index]; 从嵌入式Lua脚本中,我可以通过getIndex()函数访问索引,并希望复制数组查找。给定Lua的一个阵列,是否有一
在C代码中,我有一个数组和一个基于零的索引,用于在其中查找,例如:
char * names[] = {"Apple","Banana","Carrot"};
char * name = names[index];

从嵌入式Lua脚本中,我可以通过getIndex()函数访问索引,并希望复制数组查找。给定Lua的一个阵列,是否有一个“最好的”最佳方法?

例如,我可以创建一个与我的C数组相同内容的Lua数组,但这需要在索引时添加1:

names = {"Apple","Carrot"}
name = names[getIndex() + 1]

或者,我可以通过使用更复杂的表来避免添加1,但是这会打破像#names这样的东西:

names = {[0] = "Apple","Carrot"}
name = names[getIndex()]

建议采用什么方法?

编辑:谢谢你到目前为止的答案。不幸的是,getIndex函数中的索引添加1的解决方案并不总是适用的。这是因为在某些情况下,指数是“众所周知的” – 也就是说,可以记录指数为0表示“苹果”等等。在这种情况下,上述解决方案中的一种或多种是否优先,还是有较好的选择?

编辑2:再次感谢您的答案和评论,他们真的帮助我思考这个问题。我已经意识到可能会出现两种不同的问题出现的情况,理想的解决方案可能会有所不同。

在第一种情况下,例如考虑可能不同时间的数组和简单地相对于当前数组的索引。索引在代码之外没有意义。 Doug Currie和RBerteig是绝对正确的:数组应该是1,而getIndex应该包含一个1.如上所述,这允许C和Lua两方面的代码是惯用的。

第二种情况涉及具有意义的索引,并且可能是总是相同的数组。名称中包含“零”,“一”,“二”的极端例子。在这种情况下,每个指数的预期值是众所周知的,我觉得将Lua方面的指数作为一个指标是不直观的。我认为其他方法之一应该是首选。

解决方法

使用基于1的Lua表,并将1嵌入到getIndex函数中。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读