2010-12-12 31 views
2

Si vous deviez écrire une API appelée à partir de Lua (qui est basée sur 1, par exemple les index de table commençant à 1), appliqueriez-vous la même règle à votre API? Par exemple, disons que votre API avait une fonction appelée GetFoo (x, y) qui renvoyait un Foo à la coordonnée (x, y). Voulez-vous commencer vos axes de coordonnées à (0,0) ou (1,1) pour l'API, en supposant que dans le système lui-même (disons écrit en C ou C++ qui sont à base 0) ces choses commencent à (0,0) (donc si vous utilisiez la convention de Lua, vous devrez toujours soustraire 1 lors de la récupération des nombres pour ce genre d'opérations à partir de la pile lua).API d'écriture appelée à partir de Lua - 0 ou 1 basé?

Répondre

5

Je n'ai pas utilisé Lua, mais je dirais que pour un système de coordonnées spécifiquement (0,0) serait préférable.

Pour tout le reste, tant que vous dites clairement dans la documentation, par tous les moyens à commencer indices 1.

+1

Je suis d'accord, dans le cas particulier d'un système de coordonnées, cela n'a aucun sens de commencer les coordonnées en (1, 1). Plus précisément si vous avez l'intention d'étendre votre système à des virgules flottantes et/ou négatives. – Zecc

0

Vous pouvez aussi utiliser l'index 0 dans votre table/tableaux. Le seul inconvénient est que les bibliothèques standard utilisent la convention basée sur 1. Donc des choses comme table.sort, les opérations de chaîne, etc ... vont ignorer l'élément table [0].

+0

et '# array' aussi :-( – u0b34a0f6ae