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

前端之家收集整理的这篇文章主要介绍了在Lua中,我应该如何处理来自C的零数组索引?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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函数中。

猜你在找的Lua相关文章