それn-1
より前のすべての戻り値に対してダミー変数を作成する必要なしに、関数から「n番目」の戻り値を取得することは可能ですか?
たとえば、MATLABに次の関数があるとします。
function [a,b,c,d] = func()
a = 1;
b = 2;
c = 3;
d = 4;
ここで、3番目の戻り値のみに関心があると仮定します。これは、ダミー変数を1つ作成することで実現できます。
[dummy, dummy, variableThatIWillUse, dummy] = func;
clear dummy;
しかし、これはちょっと醜いと思います。次のようなことができると思いますが、できません。
[_, _, variableThatIWillUse, _] = func;
[, , variableThatIWillUse, ] = func;
variableThatIWillUse = func(3);
variableThatIWillUse = func()(3);
これを行うエレガントな方法はありますか?
これまでのところ、最善の解決策は、単にvariableThatIWillUse
ダミー変数として使用することです。これにより、ワークスペースを汚染する(またはクリアする必要がある)実際のダミー変数を作成する必要がなくなります。要するに、解決策はvariableThatIWillUse
、興味深いものまでのすべての戻り値にfor を使用することです。後の戻り値は単に無視できます。
[variableThatIWillUse, variableThatIWillUse, variableThatIWillUse] = func;
私はまだこれは非常に醜いコードだと思いますが、より良い方法がない場合は、その答えを受け入れます。