2017-10-09 7 views
0

Je veux éviter d'évaluer les conditions dans la boucle alors j'ai pensé à créer une fonction qui renvoie le traitement correct assigné dans une variable puis utiliser cette variable dans la boucleattribuer dynamiquement une fonction à une variable à condition puis l'utiliser en boucle tapuscrit 2.3.4

essentiellement l'idée ressemble à:


export class myClass{ 
 

 
ref; 
 

 
Treatment1(){code} 
 
Treatment2(){code} 
 
Treatment3(){code} 
 

 
selectTreatment(){ 
 
    if(condition1){ 
 
     ref = Treatment1() 
 
    else if(condition2){ 
 
     ref = Treatment2() 
 
    else (condition3){ 
 
     ref = Treatment3() 
 
} 
 

 
    executeTreatment(){ 
 
     setInterval(ref(),300) 
 
    } 
 

 

 
}

Je ne suis pas sûr mais je pense que j'ai un problème avec le mot clé "this"!


J'ai financer une telle solution:

export class myClass{ 
 

 
ref:any; 
 

 
Treatment1(){code} 
 
Treatment2(){code} 
 
Treatment3(){code} 
 

 
selectTreatment():Function{ 
 
    if(condition1){ 
 
     return()=>{Treatment1()}; 
 
    else if(condition2){ 
 
     return()=>{Treatment1()}; 
 
    else (condition3){ 
 
     return()=>{Treatment1()}; 
 
} 
 

 
    executeTreatment(){ 
 
     this.ref=this.selectTreatement(); 
 
     setInterval(ref(),300); 
 
    } 
 

 

 
}

+0

Non clear.You besoin de fournir plus de détails 'et recueil HSC. – Sampath

+0

Je suis nouveau avec tapuscrit et le projet est privé! soyez patient et dites-moi ce qui n'est pas clair et pensez-y pour répondre –

+0

Si vous ne voyez que le «code» ci-dessus, alors pouvez-vous donner une solution à quelqu'un d'autre? Vous devez montrer tout le 'code' pertinent. Où avez-vous utilisé' this' sur ci-dessus 'code'? – Sampath

Répondre

0

Il est difficile de déterminer exactement ce que votre question est puisque, comme l'a dit Sampath, vous ne montrez pas comment cette classe est utilisée. Spécifiquement comment selectTreatement et executeTreatmeant sont appelés. Mais, avec le code affiché, il y a quelques choses que vous devriez changer.

  1. Comme vous l'avez dit, il y a un problème avec le mot-clé this. Toutes les références à ref dans executeTreatment et selectTreatment doivent être préfixées avec this.

  2. En définissant ref = Treatment1(), vous définissez au résultat de Treatment1 et non à une référence à Treatment1. Vous essayez ensuite d'appeler ref dans executeTreatment, qui ne sera valide que si TreatmentX renvoie une fonction. , Vous voulez probablement ainsi changer vos selectTreatment missions à quelque chose comme this.ref = this.Treatment1;