是否可以从函数中获取“第 n 个”返回值,而不必为它之前的所有 n-1
返回值创建虚拟变量?
比方说,我在 MATLAB 中有以下函数:
function [a,b,c,d] = func()
a = 1;
b = 2;
c = 3;
d = 4;
现在假设,我只对第三个 返回值感兴趣。这可以通过创建一个虚拟变量来实现:
[dummy, dummy, variableThatIWillUse, dummy] = func;
clear dummy;
但我认为这有点丑陋。我认为您可以执行以下操作之一,但您不能:
[_, _, variableThatIWillUse, _] = func;
[, , variableThatIWillUse, ] = func;
variableThatIWillUse = func(3);
variableThatIWillUse = func()(3);
是否有任何优雅的方法可以做到这一点?
到目前为止,最好的解决方案是简单地使用 variableThatIWillUse
作为虚拟变量。这使我不必创建一个真正的虚拟变量来污染工作空间(或者我需要清除)。简而言之:解决方案是对每个返回值使用 variableThatIWillUse
,直到感兴趣的返回值。之后的返回值可以简单地忽略:
[variableThatIWillUse, variableThatIWillUse, variableThatIWillUse] = func;
我仍然认为这是非常难看的代码。
最佳答案
在 MATLAB 版本 7.9 (R2009b) 中,您可以使用 ~,例如,
[~, ~, variableThatIWillUse] = myFunction();
请注意,,
不是可选的。仅键入 [~ ~ var]
将不起作用,并且会引发错误。
参见 release notes了解详情。
关于matlab - 如何优雅地忽略 MATLAB 函数的某些返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/747296/