我有一个带有两个字段的结构,我将这个结构传递给scilab中的一个函数。 如何在被调用函数中访问此结构的元素?
%Scilab console S=struct('day',30,'month','may'); fun(S); %called function function fun(element) fields=fieldnames(element); disp(element.fields(1)); disp(element.fields(2)); endfunction;
我尝试了不同的方式,比如
disp(element.(fields(1)));
disp(element.(fields(2)));
并更改了'()'到' {}'和' []'但他们都没有给我我需要的输出
有没有办法做到这一点?
提前感谢=)
答案 0 :(得分:0)
使用getfield
您可以按名称提取字段。如果遍历fieldnames
返回的所有字段名,则可以获取所有字段。见下面的例子。
function fun(element)
fields=fieldnames(element);
for i=1:length(fields(1,:))-1
fieldname = fields(i)
fielddata = getfield(fields(i), element)
printf('%s: %s\n', string(fieldname), string(fielddata))
end
endfunction;
如果你知道结构的字段名,你可以直接调用它们。
function fun2(date_struct)
printf('day: %s\n', string(date_struct.day))
printf('month: %s\n', string(date_struct.month))
endfunction