Lua a pas parenthèse syntaxe d'appel vraiment bien que couplé avec des fermetures fonction me permettent d'écrire les éléments suivantsClosures Lua dans la mise en œuvre d'un DSL
local tag = 1
function test(obj)
return
function(str)
return
function (tbl)
tbl.objtag = tag
tbl.objname = str
return tbl
end
end
end
test (tag) "def"
{
}
test tag "def" --error
{
}
Cependant, si je retire la parenthèse autour (tag), il entraîne une erreur de compilation. Alors pourquoi Lua autorise-t-il les paramètres no-parenthèses (c'est-à-dire "def") et non les paramètres no-parenthesis var (table dans ce cas)?
Merci pour cette explication. J'étais si proche d'un DSL à part entière ... – jameszhao00
Y a-t-il une raison pour laquelle vous ne pourriez pas lancer l'entrée à la DSL à travers une sorte de "préprocesseur" pour mettre des parenthèses autour de tout? –
Yea a trouvé metalua. Cela fait ce que vous décrivez. – jameszhao00