将变量传递给Lua中的函数

时间:2011-05-17 23:08:07

标签: function lua corona

我是Lua的新手,所以(很自然地)我遇到了我试图编程的第一件事。我正在使用Corona Developer软件包提供的示例脚本。这是我试图调用的函数的简化版本(不相关的材料已删除):

function new( imageSet, slideBackground, top, bottom )

    function g:jumpToImage(num)

            print(num)
            local i = 0
            print("jumpToImage")
            print("#images", #images)
            for i = 1, #images do
                if i < num then
                    images[i].x = -screenW*.5;
                elseif i > num then
                    images[i].x = screenW*1.5 + pad
                else
                    images[i].x = screenW*.5 - pad
                end
            end
            imgNum = num
            initImage(imgNum)
        end

end

如果我尝试像这样调用该函数:

local test = slideView.new( myImages )
test.jumpToImage(2)

我收到此错误:

  

尝试将数字与nil进行比较

在第225行

。似乎“num”没有传递到函数中。这是为什么?

1 个答案:

答案 0 :(得分:5)

你在哪里宣布g?您正在向g添加一个不存在的方法(作为本地方法)。然后你也永远不会回来。但很可能那些只是复制错误或其他东西。真正的错误可能是您用来调用test:jumpToImage。

的符号

您声明g:jumpToImage(num)。那里的冒号意味着第一个参数应该被视为self。实际上,您的功能是g.jumpToImage(self, num)

稍后,您将其称为test.jumpToImage(2)。这使得self的实际参数为2且num为零。你想要做的是test:jumpToImage(2)。那里的冒号使表达式扩展为test.jumpToImage(test, 2)

请查看this页面,了解Lua :语法的解释。