lua - para - seo meta tags
¿Puede la función de Lua requerir resultados múltiples? (2)
Lua 5.1.3
require
lua export implementado en static int ll_require (lua_State *L)
en el archivo loadlib.c
. Esta función siempre devuelve 1 como número de valores devueltos en la pila.
¿Es posible crear un módulo Lua que devuelva múltiples resultados a través de la función requerida? Actualmente estoy escribiendo una extensión para package.loaders y quiero saber si necesito soportar tal comportamiento.
Por ejemplo, tome el siguiente módulo, llamado mod.lua
:
print("module loading")
return "string1", "string2"
Que es requerido por el siguiente script:
print("running script")
s1, s2 = require("mod")
print("s1: " .. tostring(s1))
print("s2: " .. tostring(s2))
Resultados en la siguiente salida:
running script
module loading
s1: string1
s2: nil
Cuando esperaría que la segunda cadena sea devuelta. No busco usar este tipo de comportamiento, y me doy cuenta de que podría replicarlo devolviendo una tabla y descomprimiendo eso, solo quiero saber si está destinado a funcionar (ya que es una sintaxis de Lua válida) y no puedo encontrar una Respuesta definitiva sobre este en cualquier lugar.
Siempre puede devolver una función desde su módulo y hacer que devuelva varios valores, como a continuación:
foo.lua
return function() return "abc", 123 end
bar.lua
local a, b = require "foo" ()