Функция Eval в LUA 5.1 - PullRequest
       68

Функция Eval в LUA 5.1

0 голосов
/ 08 сентября 2018

Я хочу использовать функцию eval в Lua,

Не могу заставить его работать. Не нашел документации по нему, есть ли у Lua функция eval?

Код пробовал:

a=1
print(a)
eval('print(a)')
eval 'print(a)'

Официальный демонстрационный переводчик Lua: https://www.lua.org/cgi-bin/demo

Выход:

1
input:3: attempt to call a nil value (global 'eval')

1 Ответ

0 голосов
/ 08 сентября 2018

Lua имеет функцию loadstring, которая анализирует строку и возвращает функцию, которая будет выполнять этот код, при условии, что данная строка является синтаксически корректным телом функции Lua.

a = 1
local f = loadstring "print(a)"
f() --> 1

Будьте осторожны, так как функции, созданные с помощью loadstring, не будут иметь доступа к локальным переменным, только к глобальным переменным. Кроме того, обычные предупреждения об использовании eval на других языках применимы и к Lua - это может вызвать проблемы с безопасностью и стабильностью в реальных системах.

Для Lua 5.2+ см. Замена функции Loadstring в последней версии - она ​​была заменена на load, что более приемлемо в Lua 5.2 +.

...