我一直在四处寻找,但我找不到任何对我有用的东西。我开始学习更多Lua并开始我正在制作一个简单的计算器。我能够将每个单独的操作都放到单独的程序中,但是当我尝试将它们组合起来时,我就无法让它运行起来。我的脚本现在是
require "io"
require "operations.lua"
do
print ("Please enter the first number in your problem.")
x = io.read()
print ("Please enter the second number in your problem.")
y = io.read()
print ("Please choose the operation you wish to perform.")
print ("Use 1 for addition, 2 for subtraction, 3 for multiplication, and 4 for division.")
op = io.read()
op = 1 then
function addition
op = 2 then
function subtraction
op = 3 then
function multiplication
op = 4 then
function division
print (answer)
io.read()
end
我的operations.lua脚本是
function addition
return answer = x+y
end
function subtraction
return answer = x-y
end
function multiplication
return answer = x*y
end
function division
return answer = x/y
end
我尝试过使用
if op = 1 then
answer = x+y
print(answer)
if op = 2 then
answer = x-y
print(answer)
我完成了每项操作。但它不起作用。我甚至无法获得它返回的错误代码,因为它关闭得如此之快。我该怎么办?
答案 0 :(得分:1)
在您的示例中,进行以下更改:您require
operations.lua没有扩展名。在operations
函数定义中包含参数。直接返回操作表达式而不是返回answer = x+y
之类的语句。
所有在一起:
操作代码.lua
function addition(x,y)
return x + y
end
--more functions go here...
function division(x,y)
return x / y
end
托管Lua脚本的代码:
require "operations"
result = addition(5,7)
print(result)
result = division(9,3)
print(result)
一旦您开始工作,请尝试重新添加io
逻辑。
请记住,在编码时,您的功能将在全球范围内定义。为避免污染全局表,请考虑将operations.lua定义为模块。看看lua-users.org Modules Tutorial。
答案 1 :(得分:1)
正确的if-then-else
语法:
if op==1 then
answer = a+b
elseif op==2 then
answer = a*b
end
print(answer)
之后:请检查正确的函数声明语法。
之后:return answer=x+y
不正确。如果您想设置answer
的值,请设置为return
。如果您想要返还金额,请使用return x+y
。
我认为你应该检查Programming in Lua。
答案 2 :(得分:0)
首先,学会使用命令行,以便您可以看到错误(在Windows上将是cmd.exe
)。
其次,将第二行更改为require("operations")
。你这样做的方式,解释器需要一个带有底层脚本operations
的目录lua.lua
。