假设我有一个 Utils.kt 文件,其中只包含一些实用功能函数,没有类或对象。假设这些函数使用一些共同的常量值。
那么我会像这样做:
那么我会像这样做:
package myapp
private val CONST1 = 1
private val CONST2 = 2
public fun function1() {}
public fun function2() {}
不幸的是,Kotlin将 private 视为“整个包都可用”。 因此,CONST1和CONST2在同一包中的所有文件中都可用。 唯一的隔离方法是将此文件移动到单独的软件包中。
但是,如果我有几个类似于这样的实用程序文件,每个文件都有自己的一组私有 常量。那么我只有两个选择:将它们中的每一个移动到唯一的包中,或者放弃并让所有文件的常量都无处不在。
两种方法都会导致混乱。
还有其他选项或建议吗?
(更新:实际上,我必须说这是 Kotlin 中令我困扰的罕见事情之一 - 没有办法使某些实体成为文件本地的(而不使用一些语法技巧):它要么对整个包可用,要么对所有人都可用)
更新:此问题现已过时(请参见已接受的答案)