In MATLAB können Sie mehrere Funktionen in einer .m
-Datei haben. Es gibt natürlich die Hauptfunktion und dann entweder verschachtelte oder lokale Funktionen .
Beispiele für jeden Funktionstyp:
%Vor% Der Unterschied ist klar, wenn Sie die% end
-Anweisungen der Funktionen verwenden. Ich denke jedoch nicht, dass es eindeutig dokumentiert ist, was Sie verwenden, wenn Sie dies nicht tun, da dies eine gültige Syntax ist:
Gibt es eine klare Definition, ob Funktionen wie myotherfunc
lokal oder verschachtelt sind?
Dies kann schnell getestet werden, da die Unterschiede zwischen den einzelnen Bereichen in der Dokumentation erwähnt werden
Der Hauptunterschied zwischen geschachtelten Funktionen und lokalen Funktionen besteht darin, dass verschachtelte Funktionen Variablen verwenden können, die in übergeordneten Funktionen definiert sind, ohne diese Variablen explizit als Argumente zu übergeben.
Also das Frage-Beispiel anpassen:
%Vor% Dieser Fehler, weil myotherfunc
tatsächlich eine lokale Funktion ist , keine verschachtelte Funktion.
Der Test wird von der Dokumentation für verschachtelte Funktionen unterstützt , die besagt:
Normalerweise benötigen Funktionen keine
end
-Anweisung. Um beliebige -Funktionen in einer Programmdatei zu verschachteln, müssen alle Funktionen in dieser Datei jedoch eineend
-Anweisung verwenden.
Tags und Links matlab function nested-function