javascript - tag - Obtener una función
wp site title php (1)
Soy un desarrollador de JavaScript que está aprendiendo Lua. Estoy atascado con el problema de obtener la aridad de una función en el lenguaje Lua.
En JavaScript, es simple:
function test (a, b) {}
console.log(test.length) // 2
¿Cómo es posible hacerlo tan fácilmente en Lua?
function test (a, b) end
print(#test) -- gives an error..
Esto solo es posible a través de la biblioteca de debug
, pero es posible.
print(debug.getinfo(test, ''u'').nparams) -- number of args
print(debug.getinfo(test, ''u'').isvararg) -- can take variable number of args?
Por favor, mira aquí y aquí para más información.
Editar : en caso de que quisieras jugar con magia negra ...
debug.setmetatable(function() end, {
__len = function(self)
-- TODO: handle isvararg in some way
return debug.getinfo(self, ''u'').nparams
end
})
Esto hará posible usar el operador #
length en las funciones y proporcionar una sensación de estilo JavaScript. Sin embargo, tenga en cuenta que esto probablemente solo funcionará en Lua 5.2 y superior.