从Lua调用的写入API - 基于0还是1?

如果您要编写一个从 Lua 调用的 API(Lua 的索引从1开始,例如,表索引从1开始),您会将同样的规则应用于您的 API 吗?

例如,假设您的 API 有一个名为 GetFoo(x, y) 的函数,该函数返回坐标(x,y)处的Foo。如果在系统中本身(例如,使用 0-based 的 C 或 C++ 编写的系统)这些值从 (0,0) 开始,那么在 API 中您会从 (0,0) 或 (1,1) 开始坐标轴,假设您使用 Lua 的约定,则必须始终从 Lua stack 的数字中减去 1 来检索这些操作的数字。

原文链接 https://stackoverflow.com/questions/4421196

点赞
stackoverflow用户117
stackoverflow用户117

我没有用过 Lua,但我认为对于一个特定的坐标系统,(0,0) 会更受欢迎。

对于其他情况,只要你在文档中清楚地说明了,大多数情况下索引从 1 开始是可以的。

2010-12-12 10:31:14
stackoverflow用户513763
stackoverflow用户513763

你也可以在表/数组中使用0索引。唯一的不便之处是标准库使用基于1的约定。因此,像table.sort,字符串操作等等都将忽略table[0]元素。

2010-12-12 11:33:52