Scrivendo API chiamata da Lua - 0 o 1 based?
-
09-10-2019 - |
Domanda
Se si dovesse scrivere un'API che viene chiamato da Lua (che è 1-based, per esempio gli indici della tabella partono da 1), volete applicare la stessa regola alla tua API?
Per esempio, pronunciare l'API aveva una funzione chiamata getFoo (x, y) che restituito un Foo le coordinate (x, y). Volete iniziare la vostra coordinate assi (0,0) o (1,1) per l'API, partendo dal presupposto che nel sistema stesso (dire scritto in C o C ++, che sono 0-based) queste cose partono da (0,0) (quindi se si è utilizzato la convenzione Lua si dovrebbe sempre avere a sottrarre 1 durante il recupero di numeri per questo tipo di operazioni dalla pila lua).
Soluzione
non ho usato Lua, ma direi per un sistema di coordinate specifico (0,0) sarebbe preferibile.
Per tutto il resto, fino a quando si affermi chiaramente nella documentazione, con tutti i mezzi iniziare indici a 1.
Altri suggerimenti
Si potrebbe anche solo utilizzare l'indice 0 nel vostro tavolo / array. L'unico inconveniente è librerie standard utilizzano la convenzione 1-based. Quindi le cose come table.sort, operazioni sulle stringhe, ecc ... ignorerà la tabella [0] elemento.