2011-05-17 22 views
0

我是Lua的新手,所以(自然而然)我被困在了第一個試圖編程的東西上。我正在使用Corona Developer包提供的示例腳本。下面是功能的簡化版本(不相關的材料移除)我試圖撥打:在Lua中傳遞變量到一個函數中

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) 

我得到這個錯誤:

attempt to compare number with nil

在225行。看起來「num」沒有傳入函數。爲什麼是這樣?

回答

5

你在哪裏申報g?您正在向g添加一個方法,該方法不存在(作爲本地)。那麼你永遠也不會回來。但最有可能的只是複製錯誤或其他東西。真正的錯誤可能是你用來調用測試的符號:jumpToImage。您可以申報g:jumpToImage(num)。那裏的那個冒號意味着第一個參數應該被當作self。所以真的,你的功能是g.jumpToImage(self, num)

後來,你把它叫做test.jumpToImage(2)。這使得self的實際參數爲2並且num爲零。你想要做的是test:jumpToImage(2)。這裏的冒號使表達式擴展爲test.jumpToImage(test, 2)

看看this頁面,獲取對Lua的:語法的解釋。

+0

好的,那就是訣竅。非常感謝! :) – 2011-05-17 23:32:59