假设我有一些Utils.kt文件,它只包含一些实用程序函数,没有类,没有对象。并假设这些函数使用一些常见的常量值。
所以我这样做:
package myapp
private val CONST1 = 1
private val CONST2 = 2
public fun function1() {}
public fun function2() {}
不幸的是,Kotlin将私有视为“可用于整个软件包”。 因此,CONST1和CONST2可用于同一包中的所有文件。 隔离它们的唯一方法是将此文件移动到单独的包中。
但是,如果我有几个像这样的实用程序文件,每个都有自己的私有常量。然后我只有两个选择:将它们中的每一个移动到一个独特的包中,或者放弃并在所有地方都可以访问它们。
无论哪种方式似乎都会造成混乱。
任何选项或建议?
( upd:实际上,我必须说这是Kotlin困扰我的那些罕见的事情之一 - 无法使某些实体成为文件本地(不使用某些语法黑客):它是可用于整个包装,也可用于所有人)
UPD:此问题现已过时(请参阅接受的答案)
答案 0 :(得分:7)
具有private
可见性的顶级声明仅在声明它们的文件中可见。
(原始答案,有问题的时候有效:Kotlin没有任何文件局部范围的概念,据我所知,没有计划介绍它。如果你不喜欢包装范围(为什么?),你可以创建一个object
封装它们使用的函数和私有常量。