2015-04-14 4 views
0

Everytime this program запуска, программа запускается после перезапуска сервера эта ошибка появляется:Lua - Computercraft - попытаться назвать ноль, но иногда работает ..?

запуска: 13: попытка вызвать ноль

Когда я закомментировать эту строку кода то же самое происходит с после этого, и после этого.

Пока все эти четыре линии. (линии round(math.floor)) Затем начинается программа.

Эти четыре переменные необходимы в программе, поэтому они не будут хорошо работать с ними.

Если я сейчас раскомментирую эти строки, программа начнется отлично, и все будет работать.

По какой-либо причине, что я делаю неправильно?

+3

Post [минимальный, полный и Проверяемость пример] (http://stackoverflow.com/help/mcve) здесь, вместо ссылки. –

+1

Функции должны быть определены до их вызова ('round' определен в строке 72). Попробуйте добавить 'local round' в строке до' while true do' в строке 5. – Adam

+0

Поскольку предложение решило вашу проблему, я отправил ее в качестве ответа. – Adam

ответ

3

Функции должны быть определены до их вызова (round определяется по строке 72, но вызывается по строке 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