PDA

Voir la version complète : Des noms de variable, variables.



Jean-Laurent
11/11/2006, 10h37
Bonjours à tous, :odile:
j'ai un petit problème de programmation en Coffee, et pas moyen de trouver la solution.
Ca semble pourtant évident. :coup:

J'ai créé une expression coffe qui marche très bien quand on l'applique sur un objet.
Mais le but final est de pouvoir l'appliquer sur une centaine d'objet.
Le problème c'est le nom des variables qui est le même pour chaque objet.

L'expression possède une ligne de code qui donne automatiquement un nom explicite à l'objet sur lequel on la
dépose. Ainsi, je me retrouve automatiquement avec des objets qui se nomment
"objet1", "objet2", "objet3", "objet4" etc...

Avec "strmid" je récupère facilement le numéro de l'objet.

Le problème est que je ne parviens pas à créer pour l'"objet1" l a variable "variable1",
pour l'"objet2" la variable "variable2" etc... automatiquement.

Je voudrais éviter d'avoir à déclarer à l'avance 200 variables avec un code du type:

var "variable"+"numéro_de_mon_objet" = ma formule ;

En résumé:
"V"+"1" me donne bien "V1" et var V1 = 2; fonctionne parfaitement,
mais comment faire ( var "V"+"1"=2; ) ?

Merci d'avance. :poucehaut:

tarlack
11/11/2006, 11h29
essaye avec des tableaux ayant comme clés les id des objets, la creation dynamique de noms de variables je connais aucun langage qui gere ca (e,fin...si y a php en partie si on utilise l'objet, mais c'est pas très propre) ;)
après en coffee je sais pas la syntaxe exacte, mais vu que ca ressemble au c++ tu devrais te retrouver avec quelque chose comme :
var1[mon_id] = valeur_de_la_var1;
etc etc
après, tu peux faire encore plus evoluer, en creant des structures du type (syntaxe trèèèès libre)
struc obj {
var1;
var2;
....
};

et dans ton code tu pourrais faire :

mesObjs[mon_id].var1 = ...
etc

après, faut voir l'initialisation et tout le reste, pour les structures au pire si ca existe pas en l'etat en coffee tu peux toujours faire une classe, c'est juste sortir le marteau pilon pour ecraser la mouche mais c'est pas bien grave, et c'est plus extensible au cas où :)

bon courage !

Majoul
11/11/2006, 12h18
Je ne sais pas si j’ai bien compris ton problème.
Si tu a bien récupéré ta chaîne de caractères "variableX", qui définie ta variable* X ,
Il te suffit pour incrémenter le nom de :




var nom* = "objet" + tostring ( evaluate("variableX")* + 1 ) ;




A+

tarlack
11/11/2006, 12h19
si j'ai bien compris, il voudrait creer des variables dont le nom est var1, var2, varn , n etant le nombre d'objets qu'il a...

Jean-Laurent
11/11/2006, 13h16
Je ne sais pas si j’ai bien compris ton problème.
Si tu a bien récupéré ta chaîne de caractères "variableX", qui définie ta variable X ,
Il te suffit pour incrémenter le nom de :
A+


Merci pour ta réponse MAJOUL, si tu n'as pas bien compris c'est certainement que je n'ai pas été clair. :oops:
Je programme un peu, mais je ne maîtrise pas encore tous les termes techniques. :oops:
Ce n'est pas pour incrémenter le contenu d'une variable de type "string",
mais "déclarer" une variable avec un nom de variable différent (dépendant de l'objet).



si j'ai bien compris, il voudrait creer des variables dont le nom est var1, var2, varn , n etant le nombre d'objets qu'il a...


Exactement.



essaye avec des tableaux ayant comme clés les id des objets, la creation dynamique de noms de variables je connais aucun langage qui gere ca.



Il me semble que je faisait ça sans problème en Action script, c'est pourquoi je pensais qu'il y avait une fonction toute simple.

Ta solution me semble une très bonne piste. :poucehaut:

:odile:

Jean-Laurent
11/11/2006, 21h41
Ca marche au poil ta solution tarlack. :prie: :love:

En coffee:



var Nobjet=int(evaluate(strmid(op->GetName(),8,1)));
var ma_variable= new(array,100);
ma_variable[Nobjet]=valeur ;


Ma variable garde ainsi un nom reconnaissable et selon l'objet, je pioche dans la ligne
correspondante du tableau.

Encore une fois merci. :love: