4 votes

Comment terminer les définitions de fonctions MATLAB/Octave ?

En recherchant des extraits de code pour MATLAB et Octave, j'ai remarqué que les fonctions sont terminées de différentes manières, et toutes semblent fonctionner parfaitement. Pour être précis, je parle des fonctions résidant dans leur fichier spécifique.

MATLAB semblent terminer leurs fonctions avec end .

function y = average(x)
  y = sum(x)/length(x); 
end

Octave termine ses fonctions par endfunction .

function retval = avg (v)
  retval = sum (v) / length (v);
endfunction

Cependant, mes fonctions fonctionnent parfaitement bien sans aucun mot-clé à la fin de la fonction.

Ma question est donc la suivante : dans quelle mesure MATLAB/Octave sont-ils stricts en ce qui concerne la fin des définitions de fonctions ?

9voto

Wolfie Points 16551

endfunction

  • endfunction est spécifique à Octace, ce n'est pas une syntaxe MATLAB valide (il en va de même pour endfor etc...)
  • Si vous savez que le code ne sera jamais exécuté qu'en Octave, cette syntaxe peut rendre la correspondance de vos boucles/fonctions/... plus claire et plus rapide. Sachez simplement que votre code sera alors incompatible avec MATLAB.
  • Je crois que vous pouvez aussi simplement utiliser end dans Octave pour la compatibilité.

Rigueur dans l'utilisation end

Vous pouvez lire le Documentation MATLAB pour les fonctions imbriquées

  • Il n'est pas nécessaire de terminer une fonction avec le signe end lorsqu'il s'agit de la seule fonction d'un fichier. Dans la documentation :

    En général, les fonctions ne nécessitent pas d'instruction de fin.

  • Voici une question connexe sur SO : Plusieurs fonctions dans un fichier .m sont-elles imbriquées ou locales lorsque "end" n'est pas utilisé ? L'extrait pertinent est le suivant, également tiré de la documentation :

    Pour imbriquer une fonction dans un fichier de programme, toutes les fonctions de ce fichier doivent utiliser une instruction de fin.

Ainsi, dans un fichier de fonction avec une seule fonction, la réponse courte est "pas strict du tout". Cependant, il est bon d'utiliser end Il y a donc moins d'ambiguïté et plus de flexibilité si vous deviez ajouter d'autres fonctions locales.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X