像控制台一样,将输入传递给Lua吗?

我正在为朋友制作一个脚本教程(我自己并不太擅长,但还可以),我想让输入创建一条真正的代码行来执行他们输入的内容。例如:

输入:print("hello")
输出:hello

我知道这是控制台所做的事情,但我能用 Lua 把它做出来吗?

谢谢。

点赞
用户6013
用户6013

只需运行 lua 命令,即可得到 lua "REPL":

$ ./lua
Lua 5.3.1  版权所有 (C) 1994-2015 Lua.org,PUC-Rio
> print("hello")
hello
>
2015-07-29 05:21:39
用户2546626
用户2546626

load

加载一个代码块。

如果 ld 是一个字符串,那么代码块就是这个字符串。

如果没有语法错误,则返回编译后的代码块作为函数;否则,返回 nil 和错误信息。

如下所示,输入可以访问全局变量,您可以将值传递到其代码中并获取返回值。

local input = [[
    local args = {...}
    print(args[1], args[3]) -- 42   1
    return args[1] + args[2], args[2] + args[3]
]]

print(load(input)(42, 99, 1)) -- 141    100
2015-07-29 08:51:06
用户4589952
用户4589952

一种方法是使用 loadstring 函数。

例如:

run = loadstring("print('Hello World!'")
run()

输出:

Hello World!

2015-07-31 22:57:09