j'ai fait ceci :
echange(T):={
local tmp;
tmp=<T[0];T[0]=<T[1];T[1]=<tmp;
}:;
Lorsque je valide ensuite la ligne :
A:=[2,3,4,5];
puis je valide la ligne :
echange(A);A
les deux premiers éléments de la liste A sont échangés.
Lorsque je tape en une seule ligne :
A:=[2,3,4,5];echange(A);A
les deux affichages de A sont déjà avec échange, c'est à dire j'obtiens l'affichage :
[3,2,4,5],1,[3,2,4,5]
Quelle est l'explication ?
merci
affectation
Modérateur : xcasadmin
Re: affectation
C'est parce que echange(A) ne crée pas de copie (utilisation de =<), donc le A original est modifié et c'est donc modifié qu'il est affiché.
Dans le 1er cas, l'affichage a été réalisé avant la modification.
Dans le 1er cas, l'affichage a été réalisé avant la modification.