[Users-fr] Un problème de liste

Samuel Gougeon sgougeon at free.fr
Mar 26 Mai 15:51:02 CEST 2020


Bonjour,

Le 26/05/2020 à 12:23, AUZANNEAU Fabrice a écrit :
>
> Bonjour
>
> J’utilise des listes dans un code Scilab et je rencontre un problème 
> pour les modifier dans une fonction. Un exemple simple :
>
> a= list()
>
> function_test_()
>
> a(2) = [3,4]
>
> endfunction
>
> a(1)= [1,2,4]
>
> _test_()
>
> disp(a)
>
> L’exécution donne ce message d’erreur :
>
> à la ligne     2 de la fonction test ( C:\Users\***\Desktop\list.sce 
> ligne 10 )
>
> à la ligne    13 du fichier exécuté C:\Users\***\Desktop\list.sce
>
> Sous-matrice incorrectement définie.
>

Pour éviter l'erreur, il faut ajouter
a = a
dans la fonction, juste avant a(2) = ... : le 1er adressage de a externe 
en lecture en crée une copie locale. C'est celle-ci qui sera modifiée 
par a(2) = ..., et perdue en sortie de fonction.
Pour la retourner dans l'environnement sans la faire figurer en argument 
de sortie explicite de la fonction, utiliser
a = return(a)

d'où :

function  test()
     a  =  a
     a(2)  =  [3,4]
     a  =  return(a)
endfunction

Samuel


-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/users-fr/attachments/20200526/349e6366/attachment.htm>


Plus d'informations sur la liste de diffusion users-fr