gpt4 book ai didi

kotlin - 私有(private)可见性修饰符和子包

转载 作者:行者123 更新时间:2023-12-04 19:03:15 25 4
gpt4 key购买 nike

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

If a top-level declaration is marked private, it is private to the package it’s declared in (see Visibility Modifiers). Since packages really nest in Kotlin, i.e. package foo.bar is considered a member of foo, if something is private in a package, it is visible to all its subpackages.

Note that members of outer packages are not imported by default, i.e. in a file in package foo.bar we can’t access members of foo without importing them. From: Visibility and Package Nesting



因此,让我们考虑以下示例:

文件1.kt
package foo

private fun bar() = println("This is bar!!!")

文件2.kt
package foo.baz

import foo.bar

fun main(args: Array<String>) = bar()

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

错误:Kotlin:无法访问“bar”:它是“foo”中的“私有(private)”

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

提前致谢。

最佳答案

虽然可能正如 Andrey Breslav 所写,规则已经改变,但即使版本为 0.12.1218 和 0.12.200,您仍然可以使用您的代码。

由于规则已更改,您不应该这样做,但如果您真的想这样做,只需将您的导入语句更改为:import foo.*而不是显式导入栏。

关于kotlin - 私有(private)可见性修饰符和子包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31570605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com