у меня функция
function A()
...
end
и еще пытаюсь где-то в другом месте, чуть повыше ее вызвать (ничего если я ее выше выставлю?), пример:
A() <= вызываем функцию
и lua-дебаггер ругает, что это глобалка без аргументов. Я так понимаю, что просто имена совпадают. а до этого она норм работала несколько недель. щас написал систему вручную, где то щас ошибки были, устранил. но вот дебаггер на ней зациклился. Пришлось саму функцию в место предполагаемого вызова вставлять.
у меня просто есть таймер, который чекает юнита интерфейса. И функция A просто накидывает фреймы NewSelectedUnit и убирает у LastSelectedUnit.

PT153, у меня норм название)) A - это просто для примера

все нашел ошибку. оказывается, у меня из-за цикла не прописались в глобалках значения, обрыв потока. и опять 25.
`
ОЖИДАНИЕ РЕКЛАМЫ...
28
Давать функциям нормальные имена и ничего ругаться не будет.
27
PT153, ясное дело. ExecuteFunc что-то не работает тоже. там ошибка же в другом, не знаю писать ли об этом постыдном.
сначала нужно что-то инициировать, а потом что-то с этим делать. У меня сначала инициируется как название функции как глобальная переменная. и поэтому не вызывается функция. Я просто думал в lua нет таких ограничении. вчера этот код работал хорошо, пока я не допустил ошибку в коде сегодня, и у меня перестало работать. Что произошло? Решил перестановки сделать, функцию наверх, потом ее вызвать таймером.
28
МрачныйВорон, пройдись поиском по коду и найди все использования строки A. И, как я уже сказал, дай её норм имя.
27
PT153, у меня норм название)) A - это просто для примера

все нашел ошибку. оказывается, у меня из-за цикла не прописались в глобалках значения, обрыв потока. и опять 25.
Принятый ответ
13
МрачныйВорон, если используешь сторонний редактор кода, лучше весь код использовать внутри pcall или xpcall. Тогда все эти "обрывы" можно будет выводить с текстом ошибки.
27
Nelloy, использую lua-дебаггер что в статье берги. но нужно поточнее. просто внутри функции в переменных значения nil. Я думал что он к функции, думал проблема вызова функции или функция не так названа или не в том месте и пр

VsCode использую.
13
МрачныйВорон, дебаггер от берги работает только для триггеров и таймеров.
local realTimerStart = TimerStart
TimerStart = function(timer, duration, repeating, callback)
	local pcallback = function()
		if callback == nil then return end
		local status, err = pcall(callback)
		if not status then
			print(err)
		end
	end
	realTimerStart(timer, duration, repeating, pcallback)
end
Есть функция pcall, которой берги и пользуется. www.lua.org/pil/8.4.html Она позволяет вызвать какую-то функцию таким образом, что можно отследить ошибку внутри функции без прерывания потока, потом можно ее вывести например через print. Таким же образом можно ее использовать например в инициализации модуля. Кривоватенько, но чтобы передать основную идею:
math.lua
function init()
	local math = {}
	function math.add(a, b)
		return a + b
	end
	return math + 1
end

local success, result = pcall(init)
if (success) then
	return result
else
	print(err)
end
В этом случае будет выведена ошибка связанная со строкой "return math + 1", так как нельзя складывать таблицу и число. При этом выполнение потока не прервется.
33
дебаггер от берги работает только для триггеров и таймеров.
Я всё триггеры инициализирую через таймеры, чтобы они тоже обернулись, таким образом у меня обёрнуто 100% кода. Вроде как я об этом писал в той теме
Чтобы оставить комментарий, пожалуйста, войдите на сайт.