我用 Lua 制作了一个(非常简单的)编程语言,但我只能执行一个命令
2020-11-8 16:13:56
收藏:0
阅读:94
评论:1
大家好,我制作了一个(非常)简单的编程语言,它有点像 Minecraft 的命令。以下是代码
function wait(cmdSleepGetNum)-- 你可以给这个函数命名
--随便什么都可以,没有关系
local start = os.time()
repeat until os.time() > start + cmdSleepGetNum
end
local input = io.read()
if input == "/help" then
print"你会发现它的用处的"
else if input == "/say" then
print"你想说什么?"
local cmdSay = io.read()
print(cmdSay)
else if input == "/stop" then
os.exit()
else if input == "/sleep" then
print"多久?"
local cmdSleepGetNum = io.read()
wait(cmdSleepGetNum)
else if input == "/rand" then
local randNum = math.random()
print(randNum)
end
end
end
end
end
现在我知道你在想什么 "这里的问题是什么?" 问题是我只能执行一个命令,当 Lua 解释器完成该命令后,我无法执行任何其他命令。
例如:
/rand 0.84018771715471(执行 /rand 命令并打印出一个随机数) /rand stdin:1:'/'附近有意外符号(尝试执行另一个命令时发生)
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

1.如果你用
elseif代替else if,就不用那么多的end了,2.如果你使用一个表格,你可以完全摆脱
if,3.正如@Egor Skriptunoff所说,你需要创建一个主循环来运行许多命令,
4.我建议你给
/sleep和/say添加一个可选参数。local function wait (cmdSleepGetNum) --你可以随意命名这个函数。 local start = os.time () repeat until os.time () > start + cmdSleepGetNum end local commands = { help = function () print "你会发现的" end, say = function (arg) if arg == '' then print '你想说什么?' arg = io.read () end print (arg) end, stop = function () os.exit () end, sleep = function (arg) if arg == '' then print '多久?' arg = tonumber (io.read ()) end wait (tonumber (arg)) end, rand = function () local randNum = math.random () print (randNum) end, [false] = function () --备用。 print '未知的命令' end } -- 主循环: while true do io.write '> ' local key, _, arg = io.read ():match '^%s*/(%S+)(%s*(.*))$' -- 你可以在一行中输入/ sleep 1等。 local command = key and key ~= '' and commands [key] or commands [false] command (arg) end