将变量传递给Lua中的函数

Ell*_*lle 0 lua function coronasdk

我是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
Run Code Online (Sandbox Code Playgroud)

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

local test = slideView.new( myImages )
test.jumpToImage(2)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

尝试将数字与零比较

在第225行.似乎"num"没有被传递到函数中.为什么是这样?

Pon*_*dle 5

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

你宣布g:jumpToImage(num).那里的冒号意味着第一个论点应该被视为self.真的,你的功能是g.jumpToImage(self, num)

之后,你称之为test.jumpToImage(2).这使得实际参数为self2并且num为零.你想做的是test:jumpToImage(2).那里的冒号使表达式扩展为test.jumpToImage(test, 2)

请查看页面以获取Lua :语法的解释.