【发布时间】:2015-08-01 06:57:09
【问题描述】:
我正在尝试为朋友制作脚本教程(我自己不太擅长,但还好),我正在尝试制作它,以便输入创建一个实际的代码行来执行他们键入的内容.例如:
Input: print("hello")
hello
我知道这是控制台的作用,但有什么方法可以用 Lua 做到吗?
谢谢。
【问题讨论】:
标签: lua
我正在尝试为朋友制作脚本教程(我自己不太擅长,但还好),我正在尝试制作它,以便输入创建一个实际的代码行来执行他们键入的内容.例如:
Input: print("hello")
hello
我知道这是控制台的作用,但有什么方法可以用 Lua 做到吗?
谢谢。
【问题讨论】:
标签: lua
只需运行 lua 命令即可获得 lua "REPL":
$ ./lua
Lua 5.3.1 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> print("hello")
hello
>
【讨论】:
加载(ld [, source [, mode [, env]]])
加载一个块。
如果 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
如您所见,输入可以访问全局变量,您可以将值传递到他的代码中并获取返回值。
【讨论】:
一种方法是使用 loadstring 函数。
例子:
run = loadstring("print('Hello World!'")
run()
输出:
世界你好!
【讨论】: