Lua - Computercraft - 试图打电话给nil,但有时会工作......?

时间:2015-04-14 14:43:12

标签: variables lua null computercraft

每次this program启动时,程序会在服务器重启后运行,此错误会显示:

  

startup:13:尝试调用nil

当我注释掉那行代码时,那之后的行发生了同样的事情。

直到所有这四行都是。 (round(math.floor)行) 然后程序启动。

程序中需要四个变量,因此它们不会很好地与它们一起被注释掉。

如果我现在取消注释这些行,程序就会完美启动,一切正常。

我做错了什么原因?

1 个答案:

答案 0 :(得分:3)

必须在调用函数之前定义函数(在第72行定义round,但在第5行调用)。您可以在定义函数之前声明它:

function program()
    local round -- forward declaration
    while true do

        -- call function defined below
        turbEnergy = round(math.floor(turbine.getEnergyStored())/100000,1) 

        -- function definition
        function round(val, decimal)                
        end