Подтвердить что ты не робот

Есть ли способ иметь постоянную постоянную файла в 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: Этот вопрос теперь устарел (см. принятый ответ)

4b9b3361

Ответ 1

Объявления верхнего уровня с видимостью private видны только в файле, где они объявлены.

(исходный ответ, действительный, когда был задан вопрос: у Kotlin нет понятия локально-локального масштаба, и, насколько мне известно, его не планируется внедрять. Если вам не нравится область пакета ( почему?), вы можете создать object инкапсуляцию функций и частных констант, которые они используют.