【问题标题】:Passing variables into a function in Lua将变量传递给 Lua 中的函数
【发布时间】:2011-05-17 23:08:06
【问题描述】:

我是 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”没有被传递到函数中。这是为什么呢?

【问题讨论】:

    标签: function lua coronasdk


    【解决方案1】:

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

    您声明g:jumpToImage(num)。那个冒号意味着第一个参数应该被视为self。真的,你的函数是g.jumpToImage(self, num)

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多