Je me débats avec ce problème depuis environ une semaine. J'ai essayé de convertir un script en une fonction à des fins de recherche. Le problème est que le code a beaucoup d'instructions conditionnelles existantes pour les variables, donc certaines variables n'existeront pas dans l'espace de travail lorsqu'elles seront vérifiées (c'est pourquoi il fonctionne bien en tant que script).
Varargin n'est pas une solution à ce problème car certaines des fonctions INPUTS n'existeront pas.
Espace de travail
var1 = 1
var2 = 2
var4 = 4
Code à transformer en fonction
if exist('var3','var')
disp('var 3 exists')
else
disp('var 3 does not exist')
end
La fonction suivante ne fonctionnera PAS car elle appelle la variable 3 qui n'existe pas.
fonction d'appel
runCode(var1, var2, var3, var4)
A l'origine, j'ai écrit ceci avant ma fonction et j'ai fait en sorte que le code vérifie pour isnan
au lieu de exist
mais ce n'est pas une bonne pratique et comme la fonction est appelée souvent, je ne veux pas avoir à mettre à jour la configuration de cette fonction chaque fois que des modifications sont apportées au code.
if ~exist("var1", "var"), var1= NaN; end
if ~exist("var2", "var"), var2= NaN; end
if ~exist("var3", "var"), var3= NaN; end
if ~exist("var4", "var"), var4= NaN; end
Je ne veux pas utiliser eval
Le chargement de l'espace de travail m'a posé des problèmes parce qu'un grand nombre de chiffres sont présents et que cela perturbe le comptage des chiffres dans une partie ultérieure du code. Les seules idées que j'ai pour l'instant sont d'avoir une configuration script pour les déclarations if précédentes, ou d'enregistrer d'une manière ou d'une autre toutes les données de l'espace de travail dans une structure ou quelque chose comme ça, puis d'assigner les valeurs à l'espace de travail correspondant. who
chaîne de caractères (donne les noms des variables de l'espace de travail).
Merci pour toutes les idées que vous pourriez avoir