363 votes

Ce qui est le ' ouvert ' mot-clé de Swift ?

Le `` fichier de la bibliothèque standard contient les éléments suivants quelques lignes de code vers la ligne 228 :

Que signifie moyenne dans ce contexte, ou ce qui est le mot clé en général ?

639voto

Martin R Points 105727

open est un nouveau niveau d'accès à Swift 3, introduit avec la mise en œuvre de

Il est disponible avec la Swift 3 instantané du 7 août 2016, et avec Xcode beta 8 6.

En bref:

  • Un open classe est accessible et subclassable à l'extérieur de la module de définition. Un open membre de la classe est accessibleet substituables à l'extérieur du module de définition.
  • Un public classe est accessible mais pas subclassable à l'extérieur de la module de définition. Un public membre de la classe est accessiblemais pas substituables à l'extérieur du module de définition.

Donc, open est-ce que public utilisé pour être dans les précédents Swift les rejets et les accès de l' public a été restreint. Ou, comme Chris Lattner, il met en SE-0177: Permettre la distinction entre l'accès du public et public overridability:

"open" est maintenant tout simplement "plus de public que dans le public", offrant un très simple et propre modèle.

Dans votre exemple, open var hashValue est une propriété qui est accessible et peut être remplacée en NSObject sous-classes.

Pour plus d'exemples et de détails, jetez un oeil à SOI-0117.

16voto

Mohammad Sadiq Points 2148

Lire ouvrir en tant que

ouvert pour l'héritage dans les autres modules

Je le répète ouvert pour l'héritage dans d'autres modules. Donc une classe ouverte est ouverte pour les sous-classement dans d'autres modules qui comprennent le module de définition. Ouvrir les vars et les fonctions sont ouvertes pour prépondérant dans d'autres modules. De ses le moins restrictif pour le niveau d'accès. Il est aussi bon que l'accès du public à accepter que quelque chose qui est public est fermé pour l'héritage dans d'autres modules.

De Apple Docs:

Ouvrir l'accès s'applique que pour les classes et les membres de la classe, et diffère de l'accès du public comme suit:

  1. Les Classes d'accès public, ou de tout accès plus restrictif niveau, peut être sous-classé uniquement dans le module où elles sont définies.

  2. Les membres de la classe avec un accès public, ou de tout accès plus restrictif niveau, peut être remplacées par des sous-classes que dans le module où ils sont défini.

  3. L'ouverture des classes peut être sous-classé dans le module où elles sont définies, et dans n'importe quel module qui importe le module où elles sont définies.

  4. Ouvert aux membres de la classe peuvent être remplacés par des sous-classes dans le module où elles sont définies, et dans n'importe quel module que les importations du module où elles sont définies.

7voto

Saranjith Points 4137

Open est un niveau d'accès, a été introduit à imposer des restrictions sur l'héritage de classe sur Swift.

Cela signifie que l' open de niveau d'accès ne peut être appliqué que pour les classes et les membres de la classe.

Dans Les Classes

Une classe ouverte peut être sous-classé dans le module qu'il est défini et en modules importer le module dans lequel la classe est définie.

Dans les membres de la Classe

La même chose s'applique aux membres du groupe. Une méthode ouverte peuvent être remplacées par des sous-classes dans le module qu'il est défini et en modules importer le module dans lequel la méthode est définie.

LA NÉCESSITÉ DE CETTE MISE À JOUR

Certaines catégories de bibliothèques et frameworks ne sont pas conçus pour être sous-classé et cela peut entraîner un comportement inattendu. Natif d'Apple bibliothèque ne permet d'écraser les mêmes méthodes et les classes,

Donc, après cette outre, ils vont appliquer public et privé, les niveaux d'accès en conséquence.

Pour plus de détails, un coup d'oeil à la Documentation d'Apple sur le Contrôle d'Accès

0voto

Fangming Points 10276

À l’exception de la sous-classe, un `` est également accessible depuis n’importe où dans votre projet. Dire que vous définissez une fonction de classe ouverte dans votre classe Util comme ceci

Puis dans n’importe où de vos contrôleurs d’affichage, vous pouvez simplement accéder à cette méthode en appelant

0voto

William Points 214

Ouvrez par exemple n’est que pour un autre module : cabosses de cacao, ou test unitaire, nous puissions hériter ou override

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X