第 8 章。
虽然我们说 lua 是一种解释语言,但是 lua 在执行前会被预编译为一种中间代码。解释执行语言的特殊之处不在于它们不需要编译执行,而是编译器是语言运行时(runtime)本身的一部分,也就是说可以执行在运行过程中动态产生的代码。
例如函数 loadstring() 接收一个字符串,返回一个可被执行的语句块(chunk):
f = loadstring("i = i + 1")
i = 10
f()
print(i) -- 11
又或者是省略赋值操作直接使用 loadstring() 的返回值:
i = 10
loadstring("i = i + 1")()
print(i) -- 11
但是直接使用的话如果出错了出错信息会比较模糊。可以使用 … 阅读全文…