2010-06-29 2 views
2

Quelqu'un peut-il m'expliquer cela? J'ai compris à travers ce tutorial que cela est connu comme une table. Venant d'un C/C++ fond, quelqu'un peut-il expliquer comment cela fonctionne (j'essaie de comprendre un code Lua existant)?Nouveauté de Lua - Opération de table

config = { 
    devices = { 
    C56 = "/dev/ttyS2", 
    ELTRA = "/dev/ttyS3", 
-- MICORE = "/dev/ttyS4", 
    HID = "/dev/ttyS1", 

    KEYCARD = { 
    -- [6] = { tty="/dev/ttyS1", speed=9600 }, 
     [7] = { tty="/dev/ttyS4", speed=9600 }, 
    }, 

    }, 
} 

est-il une table de configuration, composée d'une table de dispositif mais il y a une table KEYCARD? Que sont appelés C56 et ELTRA dans Lua? Sont-ils des champs?

Répondre

8

Une table dans Lua est juste une carte non typée, comme des objets Javascript ou des dictionnaires Python. La table associe une valeur (comme "devices" ou 6) avec une autre valeur (comme "/ dev/ttyS2"). La valeur pourrait être une autre table. Les tables sont utilisées pour créer des objets, des cartes et des tableaux.

Dans votre exemple, la variable de configuration fait référence à une table. Cette table a un élément, "devices", dont la valeur est une autre table. Cette table a 5 éléments. Quatre de ces éléments ("C56", "ELTRA", "MICORE" et "HID") ont des chaînes comme valeurs. Le cinquième élément ("KEYCARD") a une table comme valeur. Cette table comporte deux éléments (6, 7) dont les valeurs sont d'autres tables (chacune de deux éléments).

3

Vous avez une table de configuration deux sous-tables à l'intérieur, des périphériques et des cartes-clés, qui est une sous-table de périphériques. Cela fait un moment que j'ai utilisé Lua, mais pour accéder, par exemple à ELTRA, vous devez taper Config.devices.ELTRA et accéder à la carte à 7 touches que vous tapez Config.devices.KEYCARD [7] Pour obtenir la vitesse de keycard, vous pourriez faire speed = Config.devices.KEYCARD [7] .speed

+1

Notez également que Keycard [6] et MICORE sont mis en commentaire. – Rokujolady

+0

Donc, dans un sens, c'est comme une structure en C –

+1

Je suis sûr que quelqu'un va me sauter dessus pour ne pas être techniquement correct ici, mais oui. Si vous venez de C++ ou c, c'est une bonne façon d'y penser. Une structure avec des membres mal typés que vous pouvez ajouter à la volée. – Rokujolady