Объем модификатора внутренней видимости в Котлине

У меня проблема с пониманием модификатора внутреннего доступа. В моих примерах я не мог создать ситуацию, когда он ведет себя иначе, чем общественность. Даже если я создаю банки, я могу получить доступ к внутренним функциям в банке из-за пределов банки (из другого пакета, не связанного с тем, который используется в банке). В документации используется термин модуль, но я не мог точно узнать, что такое модуль.

Мои вопросы таковы:

  • что такое модуль в kotlin?

  • как внутренний модификатор доступа отличается от общедоступного модема?

Ответ 1

Компилятор Kotlin версии M8 (0.8.11) игнорирует модули, точнее, он работает так, как будто весь ваш код был помещен в один и тот же модуль, поэтому вы не можете получить ошибку видимости для internal.

Начиная со следующей версии релиза, каждый созданный вами модуль IDE имеет свою собственную область видимости, а когда вы пытаетесь получить доступ к объявлению internal от одного модуля в другом, вы получите сообщение об ошибке. Публики, с другой стороны, видны во всем проекте.

ОБНОВЛЕНИЕ: это не было включено в M8, отложенное на более поздний срок

UPDATE: это было включено после более поздних этапов и бета-версий Kotlin