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

swimming = fish.carp;

但是字段 carp 可能会也可能不会被定义。如果 carp 不是有效字段,是否可以指定默认值?例如,在 Perl 中我会写
my $swimming = $fish{carp} or my $swimming = 0;

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

最佳答案

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

swimming = get_struct(fish, 'carp', 0);


function v = get_struct(s, f, d)

if isfield(s, f)
    v = s.(f);   % Struct value
else
    v = d;       % Default value
end

最好的,

10-08 06:17