如何访问被调用函数中的结构元素?
How do I access structure elements in called function?
我有一个包含两个字段的结构,我正在将这个结构传递给 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)));
并将“()”更改为“{}”和“[]”,但其中 none 给出了我需要的输出
有什么办法吗?
提前致谢=)
在不知道字段数量或字段名称的情况下访问所有元素
使用getfield
you can extract fields by name. If you iterate through all fieldnames returned by 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
我有一个包含两个字段的结构,我正在将这个结构传递给 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)));
并将“()”更改为“{}”和“[]”,但其中 none 给出了我需要的输出
有什么办法吗?
提前致谢=)
在不知道字段数量或字段名称的情况下访问所有元素
使用getfield
you can extract fields by name. If you iterate through all fieldnames returned by 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