Луа она каждый раз будет создаваться, или инстанс будет один, а контексты разные?
Например, практика создания функции для sort. table.sort(t, function(a, b) returb a < b end) Если я в цикле 10 раз такой код вызову, будет создано 10 таких функций или 1?
По идее должно быть 10 разных функций, в момент выхода из функции все локальные значения "уничтожаются", функцию можно сохранить если оставить ссылку на нее например в глобальной переменной.
Ключевое слово function — всегда создаёт новую функцию. Вообще всегда. Точно так же как {} — создаёт новую таблицу.
Ну если глянуть на указатели таким образом созданных функций, то они не меняются. Поэтому аналогия между function и {} в этом смысле не работает.
Я не углублялся в вопрос, но ты уверен, что эти адреса не являются какими-нибудь локальными регистрами, куда временно пишется адрес фунукции?
Весь подобный хлам должен создаваться в LUA_REGISTRY, и оттуда же должен вытираться, в случае если ссылок больше не осталось.
Обсуждают сегодня