Pour une raison quelconque, je ne peux pas obtenir que cela fonctionne (du code fortement simplifié qui échoue): il compile, mais jette le premier accès de Someclass code> : p>
4 Réponses :
Vous devez générer un constructeur et déclarer votre variable dans la classe, pas la fonction:
Intéressant ... Cela semble fonctionner, bien que cette approche signifie que vous devez instancier Someclass code> avant que le membre statique
assistant code> est disponible. En outre, un peu bizarre d'initialiser un membre statique dans un constructeur d'instance. E.G., si vous créez plusieurs instances de
Someclass code>, le membre statique sera réinitialisé à chaque fois ... pas ce que vous voulez. Un autre exemple, si vous avez une méthode statique à l'aide de
Helper code>, il trouvera qu'il s'agira d'être
null code> jusqu'à i> vous instanciez
soméclass code > au moins une fois. Bizarre, pour dire le moins.
Vous ne devez pas instancier à l'intérieur du constructeur. Donc, vous ne l'écrasez pas chaque fois que vous parlez de soméclasse.
Mais lorsque vous instaniez le nouvel assistant (), vous appelez le constructeur de l'aide de la classe et c'est là que l'erreur se produit. Helper n'a pas de constructeur?
@ Wolv3R: Comme écrit, votre exemple provoquera la création d'un nouvel assistant sur chaque nouvelle instance de Somorclass, ce qui n'est sûrement pas souhaité avec une variable statique.
D'accord avec @Blanka, c'est très étrange et un anti-motif de bonafide, mais la raison pour laquelle le compilateur aime, c'est parce qu'il a eu la possibilité d'initialiser assistant code> avant que son constructeur soit appelé. @ Wolv3r, AS3 prend en charge la définition implicite et l'invocation des constructeurs de no-arg.
Je pense que cela ne peut pas fonctionner avec l'aide et la somlasse dans le même fichier. Lorsque la somlasse est initialisée, la classe d'assistance n'a pas encore été initialisée, et un objet d'assistance ne peut donc pas être créé. P>
Déplacement de l'aide à un fichier séparé devrait résoudre le problème. P>
Il a écrit que cet exemple est "Code fortement simplifié qui échoue". Je pense qu'il l'a dans deux fichiers séparés.
En fait, ils sont censés être dans le même dossier. @silyevsk, je pense que cela est en effet un problème d'ordre d'initialisation.
Il a b> dans le même fichier, c'est ainsi que vous créez un constructeur privé dans ActionScript
L'erreur non constructeur em> est la méthode de distinction incroyable du compilateur "Vous avez appelé un constructeur pour une classe que je n'ai pas encore vue"; S'il s'agissait d'un peu plus intelligent, il pourrait vérifier le fichier (unité de compilation) pour les classes internes avant de se plaindre ... mehhh Voir comme vous avez donné votre variable statique La solution suivante aperçu du VAR STATIC au moment où la classe interne est initialisée, c'est-à-dire lorsque le (probablement implicite) privé code> accès, évidemment, vous avez l'intention de Utilisez uniquement l'instance en interne vers
Someclass code> ( hypothèse; pourrait être transmis comme une valeur de retour em>). p>
helper.cinit () code> est invoqué, plutôt que
someclass.cinit () code> lorsque
Helper Code> n'existe pas encore em>: p>
+1 à Darren. Une autre option consiste à déplacer la classe code> code> en haut du fichier
Je n'avais aucune idée que vous pourriez faire cela. Je n'ai pas eu la chance de tester, mais si cela fonctionne, c'est ça.
C'est assez cool, moi aussi je n'avais aucune idée que vous pourriez faire cela. Cela dit, pour mon étui d'utilisation spécifique, je ne pense toujours pas que cela fonctionnerait (je dois le tester tbh) ... Le compilateur Flex devrait vraiment analyser tout le dossier avant de compiler quelque chose