Saltar al contenido →

fileprivate es el nuevo private

La nueva beta de Xcode 8 trae consigo cambios en la especificación de Swift y uno de los más llamativos es la aparición de dos nuevos modificadores de acceso, concretramente open y fileprivate.

¿Qué hace fileprivate? ¿Y qué pasa con private?

Recordamos que private tenía un ámbito de actuación un tanto especial si se comparaba con su igual en otros lenguajes de programación. En Swift indicaba que las variables, métodos o tipos sólo podían accederse desde elementos definidos dentro del archivo. Esto permitía que código como el que se ve a continuación fuera válido.

Ahora en Swift 3 el modificador private se iguala a sus hermanos en los otros lenguajes de desarrollo y cualquier variable marcada como tal sólo es accesible desde el ámbito en el que fue definida.

Volviendo al código anterior, éste daría un error al intentar acceder a la variable labelQuantity desde la extensión. Y para evitar este error se ha añadido el modificador fileprivate al lenguaje.

A partir de Swift 3 cualquier variable, método o clase marcada como fileprivate será accesible desde cualquier llamada que se produzca dentro del archivo, por lo que para que el código anterior funcione hay que cambiar el modificador de la variable labelQuantity.

A tenor de lo visto parece que cuando salga la versión definitiva de Swift 3 tendremos que hacer algún que otro cambio en nuestro código.

Enlaces relacionados

Propuesta SE-0025. Scope Access Level

Publicado en Swift