Sind mehrere Funktionen in einer .m-Datei verschachtelt oder lokal, wenn "end" nicht verwendet wird

8

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:

%Vor%

Gibt es eine klare Definition, ob Funktionen wie myotherfunc lokal oder verschachtelt sind?

    
Wolfie 13.09.2017, 14:26
quelle

1 Antwort

8

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 eine end -Anweisung verwenden.

    
Wolfie 13.09.2017, 14:26
quelle