Ist es möglich, den Rückgabewert 'nth' von einer Funktion zu erhalten, ohne dass zuvor Dummy-Variablen für alle n-1
Rückgabewerte erstellt werden müssen?Wie ignoriert man elegant einige Rückgabewerte einer MATLAB-Funktion?
Lassen Sie uns sagen, ich die folgende Funktion in MATLAB haben:
function [a,b,c,d] = func()
a = 1;
b = 2;
c = 3;
d = 4;
Nehmen wir nun an, ich bin daran interessiert sind nur in den dritten Rückgabewert. Dies kann durch Erstellen einer Dummy-Variablen erreicht werden:
[dummy, dummy, variableThatIWillUse, dummy] = func;
clear dummy;
Aber ich denke, das ist eine Art von hässlich. Ich würde denken, dass Sie in der Lage sein könnte, so etwas wie eine der folgenden Dinge zu tun, aber Sie können nicht:
[_, _, variableThatIWillUse, _] = func;
[, , variableThatIWillUse, ] = func;
variableThatIWillUse = func(3);
variableThatIWillUse = func()(3);
Gibt es alle elegant Möglichkeiten, dies zu tun, die funktionieren?
Bisher ist die beste Lösung, um einfach die variableThatIWillUse
als Dummy-Variable zu verwenden. Dies erspart mir, eine echte Dummy-Variable zu erstellen, die den Arbeitsplatz verunreinigt (oder die ich löschen müsste). Kurz gesagt: Die Lösung besteht darin, die variableThatIWillUse
für jeden Rückgabewert bis zum interessanten zu verwenden. Rückgabewerte nach können einfach ignoriert werden:
[variableThatIWillUse, variableThatIWillUse, variableThatIWillUse] = func;
Ich denke immer noch, diese sehr hässlich Code ist, aber wenn es keinen besseren Weg gibt, dann denke ich, werde ich die Antwort akzeptieren.
Abgesehen von der Verwendung eines Zellenarrays, wie ich es in meiner Antwort beschrieben habe, ist die Wiederholung des Variablennamens wahrscheinlich Ihre einzige andere Lösung. Hoffentlich sind Ihre Variablennamen nicht so lang wie "variableThatIWillUse". =) – gnovice
Eigentlich sind sie. "Dummy" war nur ein Beispiel. Normalerweise würde ich 'variableThatIWillNotUse' verwenden. Andere Variablen heißen 'variableThatIMightUse', 'variableThatIWillUse2' und 'variableThatCanBarelyFitOnA80CharacterLine'. Ich untersuche die Korrelation zwischen langen Namen und Mordraten. ;) – Jordi
Tatsächlich wird die R2009b-Ignorierfunktion mit dem '~' -Char eleganter gelöst. zB: [~, b] = sort (rand (10,1)) – ymihere