MATLAB 中的 1 行 try/catch 等效项

dan*_*hmg 5 perl matlab default try-catch variable-assignment

我在 MATLAB 中遇到一种情况,我想尝试将结构体字段分配给新变量,如下所示:

swimming = fish.carp;
Run Code Online (Sandbox Code Playgroud)

但该字段carp可能已定义,也可能未定义。carp有没有办法在不是有效字段的情况下指定默认值?例如,在 Perl 中我会写

my $swimming = $fish{carp} or my $swimming = 0; 
Run Code Online (Sandbox Code Playgroud)

其中 0 是默认值,or指定分配失败时要执行的操作。似乎 MATLAB 中应该存在类似的东西,但我似乎找不到它的任何文档。为了代码的可读性,如果可以的话,我宁愿不使用if语句或块。try/catch

Rat*_*ert 4

您可以创建自己的函数来处理此问题并保持代码相当清晰。就像是:

swimming = get_struct(fish, 'carp', 0);
Run Code Online (Sandbox Code Playgroud)

function v = get_struct(s, f, d)

if isfield(s, f)
    v = s.(f);   % Struct value
else
    v = d;       % Default value
end
Run Code Online (Sandbox Code Playgroud)

最好的,