Quiero recargar scripts lua en tiempo de ejecución. ¿Cuáles son las formas de hacer esto? ¿Simplemente tiene que reiniciar el sistema lua y luego volver a leer todos los archivos lua?¿Qué es una forma de volver a cargar scripts lua durante el tiempo de ejecución?
5
A
Respuesta
13
si (a) los scripts Lua están en modules, y (b) los módulos no afectan a las variables globales o mesas fuera del alcance del módulo, se pueden utilizar para causar package.loaded.????? = nil
require
para recargar el módulo:
> require "lsqlite3"
> =sqlite3.version
function: 0x10010df50
> sqlite3.version = "33"
> return sqlite3.version
33
> require "lsqlite3"
> return sqlite3.version
33
> package.loaded.lsqlite3 = nil
> return sqlite3.version
33
> require "lsqlite3"
> return sqlite3.version
function: 0x10010c2a0
>
De forma similar, si los scripts non-module se comportan bien porque (a) solo definen una sola tabla, y (b) no afectan a globales ni a otras tablas, entonces simplemente volver a cargar la secuencia de comandos también funcionará.
0
Sólo tiene que utilizar su propio include(filename)
función:
function evalfile(filename, env)
local f = assert(loadfile(filename))
return f()
end
function eval(text)
local f = assert(load(text))
return f()
end
function errorhandler(err)
return debug.traceback(err)
end
function include(filename)
local success, result = xpcall(evalfile, errorhandler, filename)
--print(string.format("success=%s filename=%s\n", success, filename))
if not success then
print("[ERROR]\n",result,"[/ERROR]\n")
end
end
function include_noerror(filename)
local success, result = xpcall(evalfile, errorhandler, filename)
--print(string.format("success=%s filename=%s\n", success, filename))
end
Cuestiones relacionadas
- 1. cómo volver a cargar solo scripts a través de firebug
- 2. ¿Es posible crear una función de forma dinámica durante el tiempo de ejecución en C++?
- 3. Tiempo de inactividad al volver a cargar mod_wsgi daemon?
- 4. ¿Qué es el tiempo de ejecución moderno?
- 5. ¿Cuál es la mejor forma de obtener la ruta del ejecutable durante el tiempo de ejecución?
- 6. Crear una clase durante el tiempo de ejecución
- 7. Lua, ¿qué es Lua?
- 8. Determine el sistema operativo durante el tiempo de ejecución
- 9. ¿Es posible cambiar dinámicamente el espacio de nombres a ServiceContract durante el tiempo de ejecución?
- 10. ¿Es posible cambiar el valor de una variable durante el tiempo de ejecución?
- 11. Cómo cargar un archivo jar en el tiempo de ejecución
- 12. Rails 3.2.x: cómo volver a cargar el directorio de aplicaciones/clases durante el desarrollo?
- 13. cargar código python en tiempo de ejecución
- 14. ¿Interpretar scripts de Objective C en tiempo de ejecución en iPhone?
- 15. Cómo cargar imágenes a WPF en tiempo de ejecución?
- 16. ¿Cargar un dll COM en el tiempo de ejecución?
- 17. XNA Change Game Service dinámicamente durante el tiempo de ejecución
- 18. Cargar un byte [] en una imagen en tiempo de ejecución
- 19. Android buscar recurso por id durante el tiempo de ejecución
- 20. ¿Qué es el entorno de tiempo de ejecución?
- 21. Resalte elementos en WebDriver durante el tiempo de ejecución
- 22. Cómo bloquear la orientación durante el tiempo de ejecución
- 23. ¿Volver a cargar una sola fila jqGrid?
- 24. ¿Por qué NumberFormatException es el tiempo de ejecución?
- 25. ¿Cómo volver a cargar gdbinit?
- 26. ¿Volver a cargar hojas de estilo CSS sin volver a cargar la página?
- 27. ¿Qué es el tiempo de ejecución y el polimorfismo de tiempo de compilación?
- 28. ¿Cómo puedo cargar un módulo Perl en tiempo de ejecución?
- 29. ¿Cómo volver a cargar TreeStore?
- 30. ¿Cargar scripts después de cargar la página?