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
您可以创建自己的函数来处理此问题并保持代码相当清晰。就像是:
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)
最好的,