2015-04-10 2 views
1

У меня есть: «play.lua» и «menu.lua», и он отлично работает. в «menu.lua»: local play = require («play»). Я сделал кнопку, которая возвращает вас в меню, поэтому я написал в «play.lua»: local menu = require («menu»), и это показывает мне ошибку. и когда мне нужно просто «меню» в play.lua, все в порядке? так в чем проблема? Я не могу два модуля требовать друг друга?Два модуля требуют друг друга - корона

ответ

1

У вас может быть два модуля, которые требуют друг друга; если вы попробуете, вы, скорее всего, получите ошибку loop or previous error loading module 'X'. Ситуация такая же, как и при рекурсивных функциях, когда a вызывает b, который вызывает a: для рекурсии требуются некоторые критерии остановки, в противном случае она будет продолжаться бесконечно. Авторы Lua внедрили проверку для обнаружения этой ситуации для require и генерируют ошибку, которую вы видите.

Чтобы избежать этого, вам необходимо перестроить код. Вы можете, например, извлечь общий код из play в core и вместо того, чтобы требовать play от menu, требуют от них обоих core, что устранит проблему.

Смежные вопросы