五分钟做一个Lua控制台程序

简介

我们将会使用Lua实现一个简单的波兰表达式的终端计算器。

开始

在Lua中,获取控制台输入内容是十分容易的一件事情,控制台输入的内容在Lua中将会变成一个数组arg[],然后我们直接拿走就好。

lua compute.lua + 1 2

在上面的控制台里我们一共输入了三个内容“+”,“1”和“2”,在Lua里,控制台传入的数据都是字符串。
我们可以在compute.lua中获取他们

print(arg[1]) -- +
print(arg[2]) -- 1
print(arg[3]) -- 2

剩下的就简单了,只需要写一个简单的波兰表达式的计算函数

function Calculate(symbol, a, b)
    -- 错误处理
    if ((type(symbol) ~= "string" or (type(a) or type(b)) ~= "number")) then
        return "错误:未知输入类型"
    end
    if (symbol == "+") then
        return a+b
    elseif (symbol == "-") then
        return a-b
    elseif (symbol == "*") then
        return a*b
    elseif (symbol == "/") then
        return a/b
    else
        -- 错误处理
        return "错误:未知符号类型"
    end
end

解析控制台的命令

Shell_symbol = arg[1]
-- 抓换类型
Shell_a = tonumber(arg[2])
Shell_b = tonumber(arg[3])

最后输出结果

print(Calculate(Shell_symbol, Shell_a, Shell_b))

完整代码

Shell_symbol = arg[1]
Shell_a = tonumber(arg[2])
Shell_b = tonumber(arg[3])

function Calculate(symbol, a, b)
    if ((type(symbol) ~= "string" or (type(a) or type(b)) ~= "number")) then
        return "错误:未知输入类型"
    end
    if (symbol == "+") then
        return a+b
    elseif (symbol == "-") then
        return a-b
    elseif (symbol == "*") then
        return a*b
    elseif (symbol == "/") then
        return a/b
    else
        return "错误:未知符号类型"
    end
end


print(Calculate(Shell_symbol, Shell_a, Shell_b))
lua
101 views
Comments
登录后评论
Sign In
·

也许非测试使用io库进行输入输出更合适?(不清楚,只知道nim是这样的,但是luaprint也比io.write性能弱好像)(最近被nim的一些特效弄得比较魔怔,勿怪,谢谢)