我是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)
我收到此错误:
在第225行尝试将数字与nil进行比较
。似乎“num”没有传递到函数中。这是为什么?
答案 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 :
语法的解释。