j'ai un problème qui me semble très simple, avec je suis sûr une solution très simple, mais je ne la trouve pas :)
En fait, je veux :
- définir une variable à l'intérieure d'une 1ère fonction
- appeler une 2ème fonction à l'intérieur de la 1ère, qui va changer la valeur de cette variable
- que la suite de l'exécution de la 1ère fonction (après appel de la 2ème) prenne en compte la valeur modifiée
Ce que je ne veux pas :
- assigner toutes mes variables à l'environnement global. Je travaille en effet sur une interface Tcl/Tk qui contient des dizaines de variables, et je ne veux pas toutes les stocker dans l'environnement global (mais uniquement que chacune reste à sa place, dans sa fonction)
- relancer la 1ère fonction avec la nouvelle valeur de la variable. Car vu que mes fonctions ouvrent en fait des fenêtres, cela rouvrirait une fenêtre déjà ouverte (et ainsi de suite à chaque appel de la 2ème fonction)
Pour tester le truc je travaille sur le code suivant :
Code : Tout sélectionner
fonction1=function() {
x=1
cat(paste("------ Fonction 1 : avant fonction 2 ------\nx=",x,"\n",sep=""))
if (x==1) {function2(valeur=x)}
cat(paste("------ Fonction 1 : après function 2 ------\nx=",x,"\n",sep=""))
}
function2=function(valeur) {
valeur=valeur+1
cat(paste("------ Fonction 2 ------\nx=",valeur,"\n",sep=""))
# assign("x",valeur,envir=??)
}
L'objectif étant simplement qu'après appel de la fonction1, les 3 résultats renvoyés soient (dans l'ordre) : "x=1" "x=2" "x=2"
Je pense qu'il faut utiliser la fonction assign(), mais je ne trouve pas comment renseigner l'argument envir...
Merci d'avance,
Maxime