[Users-fr] [PROVENANCE INTERNET] Un problème de liste

Lamy Alain Alain.Lamy at cnes.fr
Mar 26 Mai 13:46:52 CEST 2020


Oui : on ne peut pas modifier une variable globale dans une fonction.
Le mieux :

a = list()

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

a(1) = [1,2,4]
a = test(a)
disp(a)


Alain Lamy
CNES - DSO/DV/IF - Bpi 1712
18, Av. Edouard Belin  |  Tel  : 05 61 27 35 61
31401 Toulouse Cedex 9 |  Fax  : 05 61 28 25 40
France                 |  Email : Alain.Lamy at cnes.fr<mailto:Alain.Lamy at cnes.fr>

From: users-fr <users-fr-bounces at lists.scilab.org> On Behalf Of GOBILLOT Gilles 116128
Sent: mardi 26 mai 2020 13:26
To: French users mailing list for Scilab <users-fr at lists.scilab.org>
Subject: Re: [Users-fr] [PROVENANCE INTERNET] Un problème de liste

Bonjour,


A mon avis il faut soit passer a en paramètre à la fonction, soit déclarer la liste en global  (global a)?

Cordialement,
[http://www.cea.fr/var/cea/signatures/cea_logo.jpg]<http://www.cea.fr/>

Gilles GOBILLOT
Ingénieur-Chercheur
DES/IRESNE/DTN/STCP/LISM
Commissariat à l'énergie atomique et aux énergies alternatives
Tel.: 04.42.25.20.33 / Mobile : 06.87.99.19.57

Toute notre actualité sur www.cea.fr
<http://www.cea.fr/>Suivez-nous également sur Twitter : @CEA_Recherche<https://twitter.com/#!/CEA_Recherche>



De : users-fr <users-fr-bounces at lists.scilab.org<mailto:users-fr-bounces at lists.scilab.org>> De la part de AUZANNEAU Fabrice
Envoyé : mardi 26 mai 2020 12:23
À : French users mailing list for Scilab <users-fr at lists.scilab.org<mailto:users-fr at lists.scilab.org>>
Objet : [PROVENANCE INTERNET] [Users-fr] Un problème de liste


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.



Lorsque je demande le contenu de la liste a, j'obtiens :



--> a

a  =





       a(1)



1.           2.   4.



Si je mets l'instruction de la fonction dans le programme principal, tout se passe bien :



a = list()

a(1) = [1,2,4]

a(2) = [3,4]

disp(a)



L'exécution donne :



exec('C:\Users\***\Desktop\list.sce', -1)





             (1)



   1.   2.   4.



             (2)



   3.   4.



Est-ce un bug ou une erreur de ma part ? Comment modifier une liste depuis une fonction ?



Merci



Fabrice AUZANNEAU

Commissariat à l'énergie atomique et aux énergies alternatives

http://lists.scilab.org/mailman/listinfo/users-fr
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/users-fr/attachments/20200526/803137dc/attachment.htm>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: image001.jpg
Type: image/jpeg
Taille: 8708 octets
Desc: image001.jpg
URL: <https://lists.scilab.org/pipermail/users-fr/attachments/20200526/803137dc/attachment.jpg>


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