有没有办法让Kotlin中的私有文件保持不变

时间:2015-04-18 12:17:51

标签: kotlin

假设我有一些Utils.kt文件,它只包含一些实用程序函数,没有类,没有对象。并假设这些函数使用一些常见的常量值。

所以我这样做:

package myapp

private val CONST1 = 1
private val CONST2 = 2

public fun function1() {}
public fun function2() {}

不幸的是,Kotlin将私有视为“可用于整个软件包”。 因此,CONST1和CONST2可用于同一包中的所有文件。 隔离它们的唯一方法是将此文件移动到单独的包中。

但是,如果我有几个像这样的实用程序文件,每个都有自己的私有常量。然后我只有两个选择:将它们中的每一个移动到一个独特的包中,或者放弃并在所有地方都可以访问它们。

无论哪种方式似乎都会造成混乱。

任何选项或建议?

upd:实际上,我必须说这是Kotlin困扰我的那些罕见的事情之一 - 无法使某些实体成为文件本地(不使用某些语法黑客):它是可用于整个包装,也可用于所有人)

UPD:此问题现已过时(请参阅接受的答案)

1 个答案:

答案 0 :(得分:7)

具有private可见性的顶级声明仅在声明它们的文件中可见。

(原始答案,有问题的时候有效:Kotlin没有任何文件局部范围的概念,据我所知,没有计划介绍它。如果你不喜欢包装范围(为什么?),你可以创建一个object封装它们使用的函数和私有常量。