Lua - 如何使用其他脚本中的函数?

时间:2012-01-10 13:17:11

标签: function lua calculator

我一直在四处寻找,但我找不到任何对我有用的东西。我开始学习更多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)

我完成了每项操作。但它不起作用。我甚至无法获得它返回的错误代码,因为它关闭得如此之快。我该怎么办?

3 个答案:

答案 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