• [^] # Re: Différences entre Lua et OCaml ?

    Posté par (site web personnel) . En réponse à la dépêche Un nouveau serveur SMTP est né : Tethys, entièrement écrit en Lua. Évalué à 4.

    Je connais bien Lua, mais pas du tout Ocaml. Mais un point qui semblerait un peu bloquant est qu'en Lua, la structure des tables est à la base du langage.

    Les tables sont la seule structure de donnée du langage. Cela peut être utilisé comme un vecteur (on indexe par des entiers, les accès sont optimisés), comme un tableau associatif, comme une structure, comme un ensemble (les clefs sont les éléments de l'ensemble, les valeurs sont juste là pour indiquer si l'élément est présent ou non).

    Et pour étendre les tables, on a ce qu'on appelle les métatables. Ce sont des tables attachées à des objets (généralement des tables, mais pas forcément). Les fonctions stockées à des index particuliers de la métatable permettent de modifier un comportement par défaut.

    Par exemple, si la métatable d'un objet contient un objet à l'index "__index", alors lorsqu'on execute obj.key (qui en passant est juste un raccourci syntaxique pour obj["key"]), la fonction (mataméthode) sera appelée avec les paramètres obj et "key", et son résultat sera le résultat de l'expression obj.key.

    Cela permet entre autre d'implémenter des modèles orientés objets dans le langage. Car à la base Lua ne propose aucun modèle objet. Cela vient avec des bibliothèques extérieures comme LOOP http://loop.luaforge.net.