Кто-нибудь сталкивался с ограничением Lua в 200 локальный переменных в главном коде? Есть какие-нибудь костыли для обхода данного ограничения?

Kalvin273, в луа не бывает ничего вне функций. Я в принципе понял сценарий при котором в это ограничение реально можно влететь. Если для каждого логического модуля создавать отдельный луа файл со своим скоупом через do ... end, и там объявлять свою пачку локалок, то после сборки кода в один файл в главной функции реально может оказаться перебор, так как там per function, а не per scope.
Ну как обходить? Использовать таблицы, глобалки, оборачивать код в функции. Пиши в ООП стиле, такой проблемы не будет))0
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Он кладет это дело в память после preloader`а Можно код изменять напрямую в озу.
ответ
Ох, есть некоторый опыт в этом, правда не задокументированный, в общем: если вызовов мало, то GC прекрасно справляется, если вы обращаетесь к памяти очень часто, то GC вообще не вызывается. В общем от размеров проекта зависит. Если это наработка - то забейте болт. Если это большой проект - то забудьте за существование GC, и обнуляйте локалки очищайте таблицы, иначе ваша карта будет через час игры жрать 10 гигов. И я не утрирую, это мои наблюдения. Это не конкретно проблема луа, это проблема гавнорефа. И так, как реальный разработчиков 2,5 человека, которые доводили проекты на луа до конца, то истину придётся опробовать самостоятельно

26
Если речь про MAXVARS, то это касается только 200 локальных переменных в одной функции, не включая переменные из функций, вложенных в неё. Не представляю как до этого ограничения в принципе можно дойти, чтобы его понадобилось обходить.
Ответы (3)
9
Нет. Речь о переменных главной области кода, т.е. все что лежит вне функций (ну грубо говоря главная функция, да). Вообще, технически можно оптимизировать код и уйти от них, но это геморрой переписывать всё. Видимо, придется.
26
Kalvin273, в луа не бывает ничего вне функций. Я в принципе понял сценарий при котором в это ограничение реально можно влететь. Если для каждого логического модуля создавать отдельный луа файл со своим скоупом через do ... end, и там объявлять свою пачку локалок, то после сборки кода в один файл в главной функции реально может оказаться перебор, так как там per function, а не per scope.
Ну как обходить? Использовать таблицы, глобалки, оборачивать код в функции. Пиши в ООП стиле, такой проблемы не будет))0
Принятый ответ
26
так как там per function, а не per scope
Мне стала интересна эта тема, и я погуглил подробнее. Челы на реддите пишут, что это таки про области видимости, а не про функции. Я потестил в онлайн компиляторе: раз, два.
Проверьте там в варкрафте короч, кому интересно. Если второй код будет работать, то делайте выводы.
.
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.