Самомодифицируйщися код на lua
Пррограммируя на qpile, часто испытывал неудобства от невозможности использования самомодифицирующегося кода. Полгода назад даже просил разработчиков дать такую возможность. Ответ был загадочен
, теперь понятно почему.
Пример самомодифицирующегося кода на Lua. Создаём файл calculator-1.lua с таким содержимым:
s = 0
repeat
f = loadstring('print('..s..')')
if f ~= nil then
status, error = pcall(f)
if status == false then
print('error: '..error)
end -- status == false then
end -- if f ~= nil then
s = io.read()
until s == 'q'
Это калькулятор
. Программа считывает из стандартного потока ввода строку, которая должна содержать математическое выражение, превращает ее в функцию, возвращающую результат выражения, и пытается выполнить эту функцию. Выйти из цикла можно, введя "q".
