modificador de visibilidad privada y subpackages

Así que recientemente comencé a experimentar con Kotlin y me encontré con esto:

Si una statement de nivel superior está marcada como privada, es privada para el package en el que está declarada ( ver Modificadores de visibilidad ). Dado que los packages realmente anidan en Kotlin, es decir, el package foo.bar se considera miembro de foo, si algo es privado en un package, es visible para todos sus subpackages.

Tenga en count que los miembros de los packages externos no se importan de manera pnetworkingeterminada, es decir, en un file del package foo.bar no podemos acceder a los miembros de foo sin importarlos. De: Visibilidad y anidación de packages

Así que consideremos el siguiente ejemplo:

File1.kt

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

y File2.kt

 package foo.baz import foo.bar fun main(args: Array<String>) = bar() 

Por lo que entiendo, la barra de funciones () debe ser visible en el package foo.baz y, por lo tanto, puede invocarse desde main (). Pero cuando bash comstackr lo anterior, aparece el siguiente post de error:

Error: Kotlin: no se puede acceder a 'barra': es 'privado' en 'foo'

¿Es esto un error o la especificación del lenguaje ha sido actualizada y la documentation no? ¿Me estoy perdiendo de algo?

Gracias por adelantado.

Recientemente hemos cambiado las reglas de visibilidad para que los packages no vuelvan a anidar. Entonces esto no es un error en el comstackdor, pero en los documentos

Aunque podría ser como escribió Andrey Breslav, que las reglas han cambiado, aún puede usar su código incluso con la versión 0.12.1218 y la 0.12.200.

Como las reglas se han modificado, no debe hacerlo, pero si realmente desea hacerlo, simplemente cambie su statement de import a: import foo.* lugar de importar la barra explícitamente.

  • Kotlin lambda con Interface como argumento
  • Base de datos de la sala Android - Referencia sin resolver @Entity y otras annotations
  • Kotlin flatMap - map
  • Cómo cambiar el nombre de una propiedad de Kotlin para que coincida con el campo en la database de Firebase
  • Kotlin - Clase de fábrica con problemas de properties
  • kotlin int boxed identity
  • Room Kotlin: Entidades y Pojos deben tener un constructor público utilizable
  • Configurando Jetty con SSL / TLS y Keystore
  • ¿Cuál es el equivalente de Kotlin de String de Java?
  • Llamar a un constructor por defecto desde otro en Kotlin
  • Kotlin loop con pasos irregulares