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