Есть ли способ иметь постоянную постоянную файла в Kotlin
Предположим, что у меня есть файл Utils.kt, который будет содержать только некоторые служебные функции, классы, объекты. Предположим, что эти функции используют некоторый общий набор постоянных значений.
Итак, я делаю что-то вроде этого:
package myapp
private val CONST1 = 1
private val CONST2 = 2
public fun function1() {}
public fun function2() {}
К сожалению, Kotlin рассматривает частный как "доступный для всего пакета".
Поэтому CONST1 и CONST2 доступны для всех файлов, находящихся в одном пакете.
Единственный способ их изолировать - переместить этот файл в отдельный пакет.
Но что, если у меня есть несколько файлов утилиты, подобных этому, каждый со своим собственным набором частных констант. Тогда у меня есть только два варианта: переместите каждый из них в уникальный пакет или сдадитесь, и у вас есть константы из всех доступных.
В любом случае создается беспорядок.
Любые варианты или советы?
( upd:, на самом деле, я должен сказать, что это одна из тех редких вещей, которые беспокоят меня в Котлине, - никоим образом не сделать какой-либо объект локальным файлом (без использования некоторых синтаксических хаков): it либо доступны для всего пакета, либо для всех)
UPD: Этот вопрос теперь устарел (см. принятый ответ)
Ответы
Ответ 1
Объявления верхнего уровня с видимостью private
видны только в файле, где они объявлены.
(исходный ответ, действительный, когда был задан вопрос: у Kotlin нет понятия локально-локального масштаба, и, насколько мне известно, его не планируется внедрять. Если вам не нравится область пакета ( почему?), вы можете создать object
инкапсуляцию функций и частных констант, которые они используют.