私有可见性修饰符和子包

feu*_*tos 5 kotlin

所以我最近开始尝试Kotlin,我偶然发现了这个:

如果顶级声明被标记为私有,则它对声明的包是私有的(请参阅可见性修饰符).由于包真正嵌套在Kotlin中,即包foo.bar被认为是foo的成员,如果某个包在包中是私有的,则它的所有子包都是可见的.

请注意,默认情况下不会导入外部包的成员,即在包foo.bar中的文件中,我们无法在不导入它们的情况下访问foo的成员.来自:可见性和包嵌套

那么让我们考虑以下示例:

File1.kt

package foo

private fun bar() = println("This is bar!!!")
Run Code Online (Sandbox Code Playgroud)

File2.kt

package foo.baz

import foo.bar

fun main(args: Array<String>) = bar()
Run Code Online (Sandbox Code Playgroud)

根据我的理解,函数bar()应该在包foo.baz中可见,因此可以从main()调用.但是当我尝试编译上面的内容时,我收到以下错误消息:

错误:Kotlin:无法访问'bar':'foo'中的'私有'

这是一个错误还是语言规范已更新且文档没有?我错过了什么吗?

提前致谢.

And*_*lav 6

我们最近更改了可见性规则,因此包不再嵌套.所以这不是编译器中的错误,而是在文档中