在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函数中。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |