Question

Y at-il un moyen de synthétiser getters / setters en AS3? Il est très fréquent que vous avez une classe avec beaucoup de variables, en particulier dans les calculs mathématiques (modèle en modèle MVC), que vous souhaitez exposer. Y at-il quelque chose comme propriété synthétisent en Objective-C, qui permet de générer des getters / setters?

Merci,

Nava

Était-ce utile?

La solution

EDIT: Si vous voulez utiliser l'IDE (Eclipse). Vous pouvez aller rightClick sur classe-> Source-> Générer accesseurs et de mutateurs

Il est pas le même usage que synthétisent, mais si vous voulez juste de les exposer et ne pas utiliser la notation getMethod (), il peut vous aider à déclarer les méthodes avec les mots-clés Interroge / fixe comme celui-ci.

public function get example() : int
{
             return example;
}
public function set example( value : String ) : void
{
             example = value;
}

Lorsque vous utilisez le temps que vous accédez, vous pouvez utiliser les variables comme si elles étaient publiques et les méthodes seront appelées au lieu d'un accès direct

Autres conseils

Vous pouvez essayer regex. Faites une sauvegarde avant de tenter cette .

Par exemple, si vos variables private sont nommées _str et que vous voulez qu'il est getter / setter public être nommé str, vous pouvez utiliser les modèles suivants. Touché à Flex Builder Ctrl-F (ou éclipser), cochez la case à cocher regex et ajoutez les motifs suivants à la recherche et remplacer les champs d'entrée respectivement. Maintenant, cliquez sur « Rechercher » pour trouver la déclaration de propriété et cliquez sur « Remplacer » pour générer et getter setter.

^((\t)+)private\s+var\s+_(\w+):(\w+)\s*;\s*(\n)

$0$5$1public function set $3(value:$4):void$5$1{$5$1$2_$3 = value;$5$1}$5$5$1public function get $3():$4$5$1{$5$1$2return _$3;$5$1}$5$5

Ce modèle a été testé sur

        private var _str:String;//indented by two tabs

Et il a généré avec succès:

    private var _str:String;

    public function set str(value:String):void
    {
        _str = value;
    }
    public function get str():String
    {
        return _str;
    }

Pour ceux qui utilisent le Flex Builder 3 IDE, il existe des plug-ins pour la création et la mise des fragments de code, par exemple ici: http: //www.insideria. com / 2008/04 / Flex Builder-améliorations-extraits et-todo.html (il y a d'autres petits outils, mais utiles compilés sur ce site)

Ceux-ci peuvent être utilisés pour un getter / setter génération plus ou moins à l'aise.

Cependant, je crée seulement explicites accesseurs si je dois placer un code supplémentaire là. Il y a des gens qui disent que ce casse encapsulation si vous n'utilisez pas accesseurs. Cependant, avec une langue où vous pouvez ajouter des accesseurs plus tard sans changer l'interface, je ne pense pas que cela est vrai plus. Pour l'utilisateur, il est totalement transparent s'il utilise une assignation de variable simple ou une fonction définie varName (arg: Object):. Vide

Et aussi garder à l'esprit que si vous faites une variable [Bindable] (sans nom d'un événement explicite), le compilateur crée des accesseurs pour votre variable wihtout vous même le remarquer (sauf qu'il ya déjà des accesseurs de cours). Ce BTW est un moyen rapide et sale pour implémenter des interfaces qui déclarent fonctions getter et setter

Si vous faites juste une propriété publique vous n'avez pas à vous soucier des accesseurs:

public var str:String;

Cependant, si vous avez besoin dans le sens de l'événement dispatching pour vous informer des changements de propriété, vous aurez besoin de ce code vous-même. Espérons que tout IDE que vous utilisez peut aider en générant ce type de code pour vous, ou vous devrez peut-être mettre en place une sorte d'extrait de code, le DIE peut injecter pour vous.

Évitez copier et coller si vous le pouvez, vous êtes lié à manquer de changer le nom de quelque chose qui va vous causer des questions sur la route.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top