Ist es möglich, eine Funktion in einer m-Datei zu verwenden, die in einem späteren Teil derselben Datei implementiert wird: ähnlich wie in anderen Programmiersprachen wie C?Werden Vorwärtsdeklarationen in MATLAB unterstützt?
Antwort
Natürlich.
In einer solchen m-Datei würden die lokalen Funktionen nach der Hauptfunktion deklariert werden. Zum Beispiel:
function y = main_func(x)
% # This is the main function
y = helper_func1(x) .* helper_func2(x); % # Just an example
function h1 = helper_func1(x)
% # This is a helper function #1
h1 = x + 2; % # Just an example
function h2 = helper_func2(x)
% # This is a helper function #2
h2 = x * 2; % # Just an example
In diesem Beispiel main_func
kann helper_func1
und helper_func2
ohne Probleme aufrufen. Sie können es Testlauf und sehen Sie selbst:
>> main_func(8)
ans =
160
Es gibt keine Notwendigkeit für eine Vorwärtsdeklaration ist.
Übrigens sind viele m-Dateien, die mit MATLAB kommen, auf diese Weise implementiert. Zum Beispiel corrcoef
. Mit type corrcoef
können Sie das sehen.
Hinweis: Lokale Funktionsdefinitionen sind an der Eingabeaufforderung oder in Skripten nicht zulässig, daher müssen Sie in Ihrer m-Datei eine "Hauptfunktion" deklarieren. Als Übung kopiere mein Beispiel in eine neue m-Datei, entferne die Deklaration main_func
(nur die erste Zeile) und schau was passiert.
Sie können die gleichen m-Datei für die Implementierung vieler Funktionen verwenden, um eine statische Klasse mit:
What was the original reason for MATLAB's one function = one file and why is it still so?
- 1. Unterstützt MATLAB verschachtelte Variablenbereiche?
- 2. Warum sind Vorwärtsdeklarationen notwendig?
- 3. Unterstützt MATLAB benannte Argumente?
- 4. Werden Eigenschaften in Intellitest unterstützt?
- 5. Xatrs werden nicht unterstützt
- 6. Warum verwenden wir #includes, wenn Vorwärtsdeklarationen überlegen zu sein scheinen?
- 7. Werden XMP-Metadaten in PNG-Bildern unterstützt?
- 8. Werden Variablen in Logrotate-Konfigurationsdateien unterstützt?
- 9. Werden mehrzeilige Treffer in lineinfile unterstützt?
- 10. Welche ES6-Funktionen werden in JSX unterstützt?
- 11. JSPs werden in IceFaces 2.0.0 nicht unterstützt
- 12. Werden statische Indexer in C# nicht unterstützt?
- 13. Werden zyklische Abhängigkeiten in SBT unterstützt?
- 14. Werden chinesische Zeichen in Migrationstabellen unterstützt?
- 15. Wann sollte assert() in Matlab verwendet werden?
- 16. Werden Enums von JDBC unterstützt?
- 17. Vorlagen: Verwenden Sie Vorwärtsdeklarationen, um die Kompilierzeit zu reduzieren?
- 18. Werden Attribut-Zertifikate von Browsern unterstützt?
- 19. Welche Audioformate werden vom Android Browser unterstützt?
- 20. Azure-Blobspeicherfehler: Mehrere Bedingungsheader werden nicht unterstützt
- 21. Wie können mehrere benutzerdefinierte Typen unterstützt werden?
- 22. IIS-Fehler: Remote-Verbindungen werden nicht unterstützt
- 23. Wie Klassenmethoden in Schnittstellendefinitionen in Delphi unterstützt werden
- 24. Warum werden Rückwärts-Iteratoren nicht unterstützt?
- 25. Ausnahme: „URI-Formate werden nicht unterstützt“
- 26. Welche Ereignisse werden von Ember.js unterstützt?
- 27. Welche GIT-Versionen werden von GITLAB unterstützt?
- 28. Welche Logiken werden von z3 unterstützt?
- 29. Mehrere Objektgruppen pro Typ werden nicht unterstützt?
- 30. Welche Dateitypen werden von WKWebView unterstützt?