如果您要編寫一個從Lua調用的API(基於1,例如表索引從1開始),您是否會將相同的規則應用於您的API?從Lua調用寫入API - 0或1?
例如,假設您的API有一個名爲GetFoo(x,y)的函數,它在座標(x,y)處返回一個Foo。假設在系統本身(例如用C或C++編寫的基於0的編程語言)中,這些事情是從(0,0)開始的,你會在(0,0)還是(1,1) (所以如果你使用Lua約定,當從lua棧中檢索這些類型的操作時,你總是必須減1)。
如果您要編寫一個從Lua調用的API(基於1,例如表索引從1開始),您是否會將相同的規則應用於您的API?從Lua調用寫入API - 0或1?
例如,假設您的API有一個名爲GetFoo(x,y)的函數,它在座標(x,y)處返回一個Foo。假設在系統本身(例如用C或C++編寫的基於0的編程語言)中,這些事情是從(0,0)開始的,你會在(0,0)還是(1,1) (所以如果你使用Lua約定,當從lua棧中檢索這些類型的操作時,你總是必須減1)。
我沒有使用過Lua,但是我會說對於一個座標系(0,0)是首選。
對於一切,只要你在文件中明確規定了,通過各種手段開始在指數1
你也可以只使用0索引你的表/陣列。唯一不便的是標準庫使用基於1的約定。所以像table.sort,字符串操作等...將忽略table [0]元素。
和'#array'太:-( – u0b34a0f6ae 2010-12-12 18:43:40
我同意,對於座標系的特殊情況,在(1,1)處開始座標是沒有意義的。特別是如果你打算最終將你的系統擴展到浮點和/或負座標。 – Zecc 2010-12-12 14:20:07