Lua имеет функцию loadstring
, которая анализирует строку и возвращает функцию, которая будет выполнять этот код, при условии, что данная строка является синтаксически корректным телом функции Lua.
a = 1
local f = loadstring "print(a)"
f() --> 1
Будьте осторожны, так как функции, созданные с помощью loadstring
, не будут иметь доступа к локальным переменным, только к глобальным переменным. Кроме того, обычные предупреждения об использовании eval
на других языках применимы и к Lua - это может вызвать проблемы с безопасностью и стабильностью в реальных системах.
Для Lua 5.2+ см. Замена функции Loadstring в последней версии - она была заменена на load
, что более приемлемо в Lua 5.2 +.