I en utilisant ce codeportée de fin de course de variables Scilab
clc;
clear;
getd();
a=1;
b=myFunction();
, où myFunction
est définie par
function b=myFunction()
b=a+1;
endfunction
. Pour une raison étrange, cela fonctionne très bien dans Scilab. Je crois que myFunction
hérite simplement a
de la fonction principale. Ceci est en contraste avec par exemple Matlab, où a
doit être un argument d'entrée de myFunction
afin de l'utiliser.
Je veux que les fonctions de Scilab fonctionnent uniquement avec les variables locales et les variables données en entrée, comme dans Matlab. Alors que dans ce cas, a
n'est pas hérité de la fonction principale.
Comment puis-je y parvenir?
Voici comment [variable scope] (https://wiki.scilab.org/howto/global%20and%20local%20variables) fonctionne dans Scilab. Pour changer cela, vous pouvez télécharger le code source de Scilab, réécrire son moteur et compiler. – FTP
Mais pourquoi voulez-vous réaliser cela? Si vous écrivez des définitions de fonctions appropriées, c'est-à-dire que vous définissez toutes vos variables d'entrée comme des arguments entre parenthèses, et que vous appelez votre fonction avec le nombre correct d'arguments d'entrée, Scilab ne mélange pas vos variables locales et globales. Dans votre fonction, vous pouvez même vérifier qu'une entrée suffisante est fournie avec 'varargin'. – Attila